配置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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- openEuler 配置VNC ServerVNCServer
- Windows Server安全配置WindowsServer
- Windows server 2012 R2配置NTP ServerWindowsServer
- SQL SERVER 2008安全配置SQLServer
- Swoole server配置選項Server
- oracle ocp 19c考題10,科目082考試題 - shared server dispatchersOracleServer
- Windows Server 2012配置MySQL 8.0.20 MGRWindowsServerMySql
- Docker安裝配置Seata-ServerDockerServer
- 使用HazelCast實現Spring Config Server配置ASTSpringServer
- 分散式配置中心spingcloud-config-server分散式GCCloudServer
- Linux 上配置 SQL Server Always On Availability GroupLinuxSQLServerAI
- SQL Server如何配置cdc進行ETLSQLServer
- Tomcat 的 Server 檔案配置詳解!!!TomcatServer
- Tomcat的Server.xml配置詳解TomcatServerXML
- Revit Server的注意要配置說明Server
- std::make_shared
- 共享池 shared pool
- error while loading shared libraries: libgsl.so.27: cannot open shared objectErrorWhileObject
- Error while loading shared libraries: libreadline.so.7: cannot open shared objecErrorWhileOBJ
- 關於SQL Server配置管理器SQLServer
- Ubuntu Server18.04 靜態 IP 配置教程UbuntuServer
- Windows 系統 SQL Server 配置使用安全模式WindowsSQLServer模式
- Windows server 2016的安裝網路配置WindowsServer
- tidb-server 的配置檔案在哪裡?TiDBServer
- Oracle Shared Pool Memory ManagementOracle
- Flutter shared_preferences 探究Flutter
- vlc play video shared by sambaIDESamba
- Random.Shared.Next 使用random
- 配置SQL server遠端連線(區域網)SQLServer
- VisualSVN Server的配置和使用方法 圖文Server
- How to compile libusb as shared/static libraryCompile
- ./XXX.XX: error while loading shared libraries: libGLEW.so.2.1: cannot open shared object file: NoErrorWhileObject
- json-server的實踐與自定義配置化JSONServer
- Kubernetes安裝之六:配置master之api-serverASTAPIServer
- SQL Server 2000詳細安裝過程及配置SQLServer
- SQL Server 2005詳細安裝過程及配置SQLServer
- 在 Azure CentOS VM 中配置 SQL Server 2019 AG - (上)CentOSSQLServer
- rpm: error while loading shared libraries: libgcc_s.so.1: cannot open shared object file: No such fi...ErrorWhileGCObject
- [20190419]shared latch spin count.txt