oracle 共享服務連接靜態注冊服務
默認oracle的共享服務是注冊到動態注冊服務裡面的
sys@PROD3> select * from v$version where rownum=1; BANNER ---------------------------------------------------------------------------------------------------------------------------------------------------------------- Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production [oracle@server1 admin]$ cat listener.ora # listener.ora Network Configuration File: /home/u01/app/oracle/product/11.2.0/db_1/network/admin/listener.ora # Generated by Oracle configuration tools. SID_LIST_LISTENER = (SID_LIST = (SID_DESC = (GLOBAL_DBNAME =prod3.oracle.com) --這是靜態注冊服務 (ORACLE_HOME = /home/u01/app/oracle/product/11.2.0/db_1) (SID_NAME =PROD3) ) (SID_DESC = (GLOBAL_DBNAME = PLSExtProc) (ORACLE_HOME = /home/u01/app/oracle/product/11.2.0/db_1) (SID_NAME = PLSExtProc) ) ) LISTENER = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = server1)(PORT = 1521)) )
設置共享服務器:
alter system set DISPATCHERS = '(PROTOCOL=TCP)(DISPATCHERS=3)'; alter system set shared_server_sessions=200 scope=both; alter system set max_dispatchers=10 scope=both; alter system set shared_servers=10 scope=both; alter system set max_shared_servers=30 scope=both; [oracle@server1 admin]$ lsnrctl services LSNRCTL for Linux: Version 11.2.0.3.0 - Production on 20-APR-2015 15:46:17 Copyright (c) 1991, 2011, Oracle. All rights reserved. Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=server1)(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 "PROD3" has 1 instance(s). Instance "PROD3", status READY, has 4 handler(s) for this service... Handler(s): "DEDICATED" established:0 refused:0 state:ready LOCAL SERVER "D001" established:0 refused:0 current:0 max:1022 state:ready DISPATCHER (ADDRESS=(PROTOCOL=tcp)(HOST=server1)(PORT=57907)) "D000" established:0 refused:0 current:0 max:1022 state:ready DISPATCHER (ADDRESS=(PROTOCOL=tcp)(HOST=server1)(PORT=64757)) "D002" established:0 refused:0 current:0 max:1022 state:ready DISPATCHER (ADDRESS=(PROTOCOL=tcp)(HOST=server1)(PORT=31428)) Service "prod3.oracle.com" has 1 instance(s). Instance "PROD3", status UNKNOWN, has 1 handler(s) for this service... Handler(s): "DEDICATED" established:0 refused:0 LOCAL SERVER The command completed successfully
--靜態注冊服務prod3.oracle.com裡面沒有dispatcher,動態注冊prod3裡面有
cat tnsnames.ora PROD3_S = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = server1)(PORT = 1521)) ) (CONNECT_DATA = (server=shared) (SERVICE_NAME =prod3.oracle.com) ) ) PROD3 = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = server1)(PORT = 1521)) ) (CONNECT_DATA = (server=dedicated) (SERVICE_NAME =prod3.oracle.com) ) )
因為服務prod3.oracle.com 裡面沒有dispatcher,所以當你作為共享服務連接的時候會報錯ORA-12523
[oracle@server1 admin]$ sqlplussys/oracle@prod3_s as sysdba SQL*Plus: Release 11.2.0.3.0 Production on Mon Apr 20 15:48:49 2015 Copyright (c) 1982, 2011, Oracle. All rights reserved. ERROR: ORA-12523: TNS:listener could not find instance appropriate for the client connection
將共享服務注冊到靜態監聽裡面
修改參數
alter system set dispatchers='(PROTOCOL=TCP)(DISPATCHERS=3)(SERVICE=PROD3,PROD3.ORACLE.COM)';
指定service參數
[oracle@server1 admin]$ lsnrctl services LSNRCTL for Linux: Version 11.2.0.3.0 - Production on 20-APR-2015 15:49:42 Copyright (c) 1991, 2011, Oracle. All rights reserved. Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=server1)(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 "PROD3" has 1 instance(s). Instance "PROD3", 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:1022 state:ready DISPATCHER (ADDRESS=(PROTOCOL=tcp)(HOST=server1)(PORT=31428)) "D001" established:0 refused:0 current:0 max:1022 state:ready DISPATCHER (ADDRESS=(PROTOCOL=tcp)(HOST=server1)(PORT=57907)) "D000" established:0 refused:0 current:0 max:1022 state:ready DISPATCHER (ADDRESS=(PROTOCOL=tcp)(HOST=server1)(PORT=64757)) Service "prod3.oracle.com" has 2 instance(s). Instance "PROD3", status UNKNOWN, has 1 handler(s) for this service... Handler(s): "DEDICATED" established:0 refused:0 LOCAL SERVER Instance "PROD3", status READY, has 3 handler(s) for this service... Handler(s): "D002" established:0 refused:0 current:0 max:1022 state:ready DISPATCHER (ADDRESS=(PROTOCOL=tcp)(HOST=server1)(PORT=31428)) "D001" established:0 refused:0 current:0 max:1022 state:ready DISPATCHER (ADDRESS=(PROTOCOL=tcp)(HOST=server1)(PORT=57907)) "D000" established:0 refused:0 current:0 max:1022 state:ready DISPATCHER (ADDRESS=(PROTOCOL=tcp)(HOST=server1)(PORT=64757)) The command completed successfully
現在以共享服務器訪問:
[oracle@server1 admin]$ sqlplus sys/oracle@prod3_s as sysdba SQL*Plus: Release 11.2.0.3.0 Production on Mon Apr 20 15:50:09 2015 Copyright (c) 1982, 2011, Oracle. All rights reserved. Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production With the Partitioning, OLAP, Data Mining and Real Application Testing options sys@PROD3>