在資料中心透過 DTU (Data Transfer Unit) 遠程連接 Oracle 9i,常遇資料庫與客戶端配置不匹配問題。核心在於:**資料庫必須運行於共用伺服器模式**,而非預設的專用伺服器模式。
使用 DBCA (Database Configuration Assistant) 將連線模式從 DEDICATED 改為 SHARED。
ALTER SYSTEM SET DISPATCHERS='(PROTOCOL=TCP)(DISPATCHERS=2)' SCOPE=BOTH;
ALTER SYSTEM SET SHARED_SERVERS=4 SCOPE=BOTH;
DISPATCHERS:分派器數量;SHARED_SERVERS:共用伺服器進程數。測試環境可先設 2/4,生產依負載調整。
或直接修改 init.ora/spfile 後重啟:
DISPATCHERS='(PROTOCOL=TCP)(DISPATCHERS=2)'
SHARED_SERVERS=4
# 修改前 (專用)
ORCL =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = dbhost)(PORT = 1521))
(CONNECT_DATA = (SERVER = DEDICATED)(SERVICE_NAME = orcl))
)
# 修改後 (共用)
ORCL =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = dbhost)(PORT = 1521))
(CONNECT_DATA = (SERVER = SHARED)(SERVICE_NAME = orcl))
)
關鍵:SERVER = SHARED 告知客戶端走共用伺服器路徑。
lsnrctl status)。ORA73 需 Windows NT 環境,無法模擬驗證。其 tnsnames.ora 無 SERVER 參數,推測若不設 DISPATCHERS/SHARED_SERVERS 則為專用模式。有興趣者可自行驗證。
V$DISPATCHER、V$SHARED_SERVER。V$QUEUE、V$DISPATCHER_RATE 微調。