配置Shared Server
9i 下的共享伺服器 Shared Server(8i 中的多執行緒伺服器 MTS )主要用在 OLTP 業務中,伺服器程式每次處理業務只需很短的時間,大多在空閒狀態,在這種情況下,可以用較少的資源,處理較多的使用者請求。
共享伺服器的配置
1.設定 DISPATCHERS 引數:
在 pfile 中新增:
*.DISPATCHERS='(PROTOCOL=TCP)(SERVICE=SKYSH)(DISPATCHERS=2)(PROTOCOL=IPC)(DISPATCHERS=1)'
以上方法啟動之後,DISPATCHER 的埠是隨機分配的,如果要固定每個 DISPATCHER 的埠,可以用一下方法:
使用不同埠:
*.DISPATCHERS='(ADDRESS=(PROTOCOL=TCP)(PORT=5000))(DISPATCHERS=1)','(ADDRESS=(PROTOCOL=TCP)(PORT=5001))(DISPATCHERS=1)'
使用相同埠:
*.dispatchers='(ADDRESS=(PROTOCOL=TCP)(PORT=5130))(SERVICE=SKYSHR)(DISPATCHERS=1)'
如果是 spfile 啟動,先用 create pfile from spfile 建立 pfile,修改好之後,再用 create spfile from pfile 建立 spfile。
注:雖然 DISPATCHERS 是動態引數,但只能用 alter system set DISPATCHERS 來臨時新增刪除 dispatcher,重啟之後又恢復原值,且不能使用 scope 引數。
其中,SERVICE=SKYSH 引數可以不指定,如果不指定,則需要指定 service_names 和 instance_name 初始引數,當 instance 啟動時,PMON 會動態將 SERVICE 或者 service_names 指定的值邦定到 LISTENER,並生成 dispatchers。
DISPATCHERS=2 如果不指定,那麼預設值是 1。
PROTOCOL:當使用 Shared Server 連線時,必須通過 Oracle Net Services,即使客戶端和資料庫在同一臺機子上,如果在 Windows NT 上,dispatchers 只能使用 TCP/IP 協議。
2.設定客戶端 tnsnames.ora 檔案:
SKY3 =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.123)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = SKYSH.heysky.net)
(SERVER = SHARED)
)
)
其中,SERVICE_NAME = SKYSH.heysky.net 中的值必須是動態邦定的 service_name.db_domain,否則會產生 ORA-12523 錯誤:
ERROR:
ORA-12523: TNS:listener could not find instance appropriate for the client connection
使用共享伺服器連線,必須指定 (SERVER = SHARED),如果不指定,則作為 DEDICATE 連線。
3.SHARED_SERVERS 引數:
該引數指定當 instance 啟動時,初始生成的共享伺服器程式數量,如果要使用共享伺服器,該值必須大於 0,否則將產生 ORA-12520 錯誤:
ERROR:
ORA-12520: TNS:listener could not find available handler for requested type of server
通過動態改變該引數,可以增加減少預設的共享伺服器程式數量,或者在不停止資料庫的情況下禁止共享伺服器。當動態將其設定為 0 時,共享伺服器程式在完成所有工作,並空閒一段時間之後終止,可以通過檢視 v$shared_server 動態檢視來檢視共享伺服器的狀態。
4.其他一些相關引數:
MAX_DISPATCHERS:最大 DISPATCHER 數量,預設值是 5,如果 DISPATCHERS 中設定的所有 DISPATCHER 數量之和大於 5,那麼 MAX_DISPATCHERS 等於這個和數。
MAX_SHARED_SERVERS:最大共享伺服器程式,當初始分配的 SHARED_SERVERS 不夠時,Oracle 會繼續生成 共享伺服器,直到這個最大值,當空閒時,Oracle 會終止空閒的程式,直到 SHARED_SERVERS 中指定的值為止。
CIRCUITS:改值一般等於 SESSIONS 的數量。
SHARED_SERVER_SESSIONS:共享伺服器連線所能用的最大 SESSION 值,一般可以設定為小於 CIRCUITS and SESSIONS -5 的值,以便給 DEDICATE 連線留下一定的 SESSION 數。
5.一些注意事項:
當 sysdba 已 shared server 連線時,不能執行 start up、shut down 或者 recovery 命令,否則可能出現如下錯誤:
ORA-00106: cannot startup/shutdown database when connected to a dispatcher
當使用共享伺服器的時候,需要設定 LARGE_POOL_SIZE 引數,並且要足夠,因為,當使用共享伺服器的時候,本來在 PGA 中的 cursor state、User session data 資訊會放到 LARGE POOL 中,如果 LARGE_POOL_SIZE 沒有設定,就會放到 SHARE POOL 這將會使 SHARE POOL 產生碎片,影響效能。
6.一些相關動態檢視:
V$CIRCUIT
V$SHARED_SERVER
V$DISPATCHER
V$SHARED_SERVER_MONITOR
V$QUEUE
V$SESSION
例子:檢視使用哪種方式連線資料庫
SQL> select sid from v$mystat where rownum=1;
SID
----------
9
SQL> select server from v$session
2 where sid=9;
SERVER
---------
SHARED
7.檢視 listener 資訊:
使用 Shared Server 時,當 Instance 啟動時,PMON 會動態將 service_names 引數,或 DISPATCHERS 中的 SERVICE 引數設定的值邦定到 LISTENER,併為該 SERVICE 分配相應的 DISPATCHER,這些資訊可以通過 LSNRCTL 命令來獲得:
C:\Documents and Settings\Administrator>lsnrctl
LSNRCTL for 32-bit Windows: Version 9.2.0.3.0 - Production on 17-MAY-2006 23:22:58
Copyright (c) 1991, 2002, Oracle Corporation. All rights reserved.
Welcome to LSNRCTL, type "help" for information.
LSNRCTL> status
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=heysky)(PORT=1521)))
STATUS of the LISTENER
------------------------
Alias LISTENER
Version TNSLSNR for 32-bit Windows: Version 9.2.0.3.0 - Produc
tion
Start Date 17-MAY-2006 21:41:12
Uptime 0 days 1 hr. 46 min. 13 sec
Trace Level off
Security OFF
SNMP OFF
Listener Parameter File E:\oracle\ora92\network\admin\listener.ora
Listener Log File E:\oracle\ora92\network\log\listener.log
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=heysky)(PORT=1521)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(PIPENAME=\\.\pipe\EXTPROC0ipc)))
Services Summary...
Service "PLSExtProc" has 1 instance(s).
Instance "PLSExtProc", status UNKNOWN, has 1 handler(s) for this service...
Service "SKYSHARED.heysky.net" has 1 instance(s).
Instance "sky", status READY, has 4 handler(s) for this service...
Service "SKYTEST" has 1 instance(s).
Instance "SKY", status UNKNOWN, has 1 handler(s) for this service...
The command completed successfully
LSNRCTL> service
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=heysky)(PORT=1521)))
Services Summary...
Service "PLSExtProc" has 1 instance(s).
Instance "PLSExtProc", status UNKNOWN, has 1 handler(s) for this service...
Handler(s):
"DEDICATED" established:0 refused:0
LOCAL SERVER
Service "SKYSHARED.heysky.net" has 1 instance(s).
Instance "sky", status READY, has 4 handler(s) for this service...
Handler(s):
"DEDICATED" established:0 refused:0 state:ready
LOCAL SERVER
"D002" established:0 refused:0 current:0 max:1002 state:ready
DISPATCHER
(ADDRESS=(PROTOCOL=tcp)(HOST=heysky)(PORT=2312))
"D001" established:0 refused:0 current:0 max:1002 state:ready
DISPATCHER
(ADDRESS=(PROTOCOL=tcp)(HOST=heysky)(PORT=2311))
"D000" established:0 refused:0 current:0 max:1002 state:ready
DISPATCHER
(ADDRESS=(PROTOCOL=tcp)(HOST=heysky)(PORT=2309))
Service "SKYTEST" has 1 instance(s).
Instance "SKY", status UNKNOWN, has 1 handler(s) for this service...
Handler(s):
"DEDICATED" established:0 refused:0
LOCAL SERVER
The command completed successfully
如果 LISTENER 啟動,資料庫的任何動態改變,比如,DISPATCHERS、SERVICE_NAMES 都會動態邦定到 LISTENER,從 LSNRCTL 可以看到這些改變,如果 LISTENER 沒有啟動,改變之後,再啟動 LISTENER,那麼這些改變不會邦定到 LISTENER 上。所以一般建議,先啟動 LISTENER,再啟動資料庫,以便能夠動態邦定。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/40239/viewspace-202000/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle shared server 配置詳解OracleServer
- Shared ServerServer
- shared Server 分片Server
- Dedicated and Shared Server ProcessesServer
- Oracle dedicated server process and shared server processOracleServer
- configure shared serverServer
- dispatcher & shared server小結Server
- Restricted Operations of the Shared Server (132)RESTServer
- Shared Server Architecture (128)Server
- Shared Server Processes (Snnn) (131)Server
- Oracle Shared Server(OSS)筆記 (zt)OracleServer筆記
- oracle實驗記錄 (SHARED server MODE)OracleServer
- 如何基於共享伺服器模式shared server mode配置大池large pool之二伺服器模式Server
- oracle 10g在共享伺服器模式shared server如何配置大池large poolOracle 10g伺服器模式Server
- dg 配置,建議關閉shared 模式。模式
- 共享伺服器模式(shared server)和專用伺服器模式(dedicated server)伺服器模式Server
- 【實驗】【Shared Server Mode】取消共享伺服器模式Server伺服器模式
- 【Shared Server Mode】測試調整shared_servers引數對資料庫的影響Server資料庫
- 【偵聽】V$session.server = none when using Shared Server/MTS ConfigurationSessionServerNone
- RHL配置VNC ServerVNCServer
- openEuler 配置VNC ServerVNCServer
- Swoole server配置選項Server
- zabbix-server端配置Server
- Linux VNC Server 配置LinuxVNCServer
- 重新配置Domino ServerServer
- FileZilla Server 安裝配置Server
- Ubuntu Server 網路配置UbuntuServer
- 安裝配置zabbix-serverServer
- Citrix Merchandising Server 配置Server
- Git server安裝和配置GitServer
- 配置Apache Server + Tomcat (轉)ApacheServerTomcat
- 【實驗】【Shared Server Mode】手工關閉某一個特定排程程式Server
- SQL Server 日誌傳送配置SQLServer
- Team Foundation Server 安裝配置教程Server
- SQL SERVER 2005 配置-saSQLServer
- SQL Server 資料庫同步配置SQLServer資料庫
- glodengate配置時報ggsci: error while loading shared librariesErrorWhile
- oracle ocp 19c考題10,科目082考試題 - shared server dispatchersOracleServer