oracle 響應用戶端請求有兩種方式:
1 專有連接配接:用一個伺服器程序響應一個用戶端請求
2 共享連接配接:用一個分派器(dispatcher)響應一個用戶端請求,伺服器端有多個伺服器程序,共享處理所有分派器的請求;
兩種連接配接方式的優缺點
1 對于連接配接數不多的應用,适宜用專有連接配接,客戶的請求響應及時;
2 對于連接配接數較大的應用,适宜用共享連接配接,充分利用系統資源
背景作業和RMAN操作必須使用專有連接配接;
配置共享伺服器連接配接
既可以在參數檔案内進行靜态配置,可以動态修改;
共享伺服器配置的初始化參數
■ SHARED_SERVERS: 初始化啟動的伺服器程序數和保留的最小伺服器程序數;如果使用共享連接配接,這個參數是必配的;
■ MAX_SHARED_SERVERS: 最大并發的共享伺服器程序數
■ SHARED_SERVER_SESSIONS: 可并發處理的最大共享使用者會話數,超過此數值的使用者會話将使用專有連接配接
■ DISPATCHERS: 共享連接配接的分派器數量
■ MAX_DISPATCHERS: 可同時并發的共享連接配接的最大的分派器數量,此參數目前可忽略;
■ CIRCUITS: 可用的虛拟回路數(Specifies the total number of virtual circuits that are available for inbound and outbound network sessions)
1 靜态參數檔案中SHARED_SERVERS大于0既可。其他參數不是必要的。
2 使用ALTER SYSTEM語句設定SHARED_SERVERS為一大于0值,如:
ALTER SYSTEM SET SHARED_SERVERS = 5;
設定SHARED_SERVERS數值
一般而言,可以按一個伺服器響應10個連接配接進行計算;
實際的共享伺服器程序可以動态增加,SHARED_SERVERS的數值應該設定為實際所需要的最小值;
設定MAX_SHARED_SERVERS以限制共享伺服器程序數;
可以動态修改MAX_SHARED_SERVERS以允許更多的伺服器程序數,或者動态修改SHARED_SERVERS為一個大于MAX_SHARED_SERVERS的數值以允許更多的伺服器程序數;
Number of dispatchers =
CEIL ( max. concurrent sessions / connections for each dispatcher )
例如:
每程序能支援970個連接配接
TCP/IP連接配接最多有4000個會話
安全(TCP/IP with SSL)最多有2,500個會話
則用于TCP/IP協定的DISPATCHERS可設為5,CELL(4000 / 970), 用于安全TCP/IP協定的dispatchers 可設為3,CELL(2500 / 970:
DISPATCHERS=’(PROT=tcp)(DISP=5)’, ‘(PROT-tcps)(DISP=3)’
強制特定的IP使用DISPATCH
DISPATCHERS=”(ADDRESS=(PROTOCOL=TCP)(HOST=144.25.16.201))(DISPATCHERS=2)”
這将産生兩個DISPATCH監聽特定的IP
強制DISPATCH使用特定端口
DISPATCHERS=”(ADDRESS=(PROTOCOL=TCP)(PORT=5000))”
DISPATCHERS=”(ADDRESS=(PROTOCOL=TCP)(PORT=5001))”
修改DISPATCH數量
DISPATCH不可以自動地動态變化。須使用ALTER SYSTEM指令進行修改。
MAX_DISPATCHERS可以設定可使用的最大DISPATCH數;
察看DISPATCH的負載性能,可查詢如下視圖
■ VQUEUE■VDISPATCHER
■ VDISPATCHERRATE動态修改DISPATCH數量,使用ALTERSYSTEM指令,如初始配置為:DISPATCHERS=′(PROT=tcp)(DISP=2)′,‘(PROT=tcps)(DISP=2)′現在要将TCP協定的DISPATCH設為3,TCPS設為1指令如下:ALTERSYSTEMSETDISPATCHERS=‘(INDEX=0)(DISP=3)′,‘(INDEX=1)(DISP=1)′;或:ALTERSYSTEMSETDISPATCHERS=‘(PROT=tcp)(DISP=3)′,‘(PROT−tcps)(DISP=1)′;如果目前TCP協定的DISPATCH少于3,資料庫将會建立新的DISPATCH。相反,如下TCPS目前有2個DISPATCH,則會在使用者退出連接配接後減少一個dispatch查詢DISPATCH的配置VDISPATCHER_CONFIG
當修改一個DISPATCH的DESCRIPTION, ADDRESS, PROTOCOL, CONNECTIONS,TICKS, MULTIPLEX, and POOL屬性後,修改後的設定不能立即生效,需要強制性地殺掉現在的DISPATCH程序
關閉DISPATCH程序
1 确定要關閉的程序
SELECT NAME, NETWORK FROM V$DISPATCHER;
2 ALTER SYSTEM SHUTDOWN IMMEDIATE ‘D002’(DISPATCH NAME);
關閉共享服務連接配接
1 設定SHARED_SERVERS=0;
2 關閉DISPATCH
ALTER SYSTEM SET DISPATCHERS = ”;
監控
View Description
VDISPATCHER提供DISPATCH程序資訊,包括DISPATCH名稱,網絡,位址,狀态,統計資訊和索引号等;VDISPATCHER_CONFIG 提供DISPATCH的配置資訊
VDISPATCHERRATE提供DISPATCH的速度(RATE)統計VQUEUE 提供共享伺服器隊列資訊.
VSHAREDSERVER提供共享伺服器資訊.VCIRCUIT 提供使用者通過DISPATCH連接配接到資料庫的虛拟回路資訊(virtual circuits)
V$SHARED_SERVER_MONITOR 提供共享伺服器的優化資訊