Oracle 监听(Listener) 中 services 说明
?
一. 查看service
1.1 先看下一個監聽查看的示例:
[oracle@db2 ~]$ lsnrctl service
?
LSNRCTL for Linux: Version 10.2.0.1.0 -Production on 19-JUL-2011 01:24:43
?
Copyright (c) 1991, 2005, Oracle.? All rights reserved.
?
Connecting to(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=db2)(PORT=1521)))
Services Summary...
Service "PLSExtProc"has 1 instance(s).
?Instance "PLSExtProc", status UNKNOWN, has 1 handler(s) forthis service...
???Handler(s):
?????"DEDICATED" established:0 refused:0
????????LOCAL SERVER
Service "dave2"has 1 instance(s).
?Instance "dave2", status READY, has 1 handler(s) for thisservice...
???Handler(s):
?????"DEDICATED" established:5 refused:0 state:ready
????????LOCAL SERVER
Service"dave2XDB" has 1 instance(s).
?Instance "dave2", status READY, has 1 handler(s) for thisservice...
???Handler(s):
?????"D000" established:0 refused:0 current:0 max:1022 state:ready
????????DISPATCHER <machine: db2, pid: 11691>
????????(ADDRESS=(PROTOCOL=tcp)(HOST=db2)(PORT=35619))
Service "dave2_XPT"has 1 instance(s).
??Instance "dave2", status READY, has1 handler(s) for this service...
???Handler(s):
?????"DEDICATED" established:5 refused:0 state:ready
????????LOCAL SERVER
The command completed successfully
?
[oracle@db2 ~]$ lsnrctl status
LSNRCTL for Linux: Version 10.2.0.1.0 -Production on 19-JUL-2011 01:32:14
?
Copyright (c) 1991, 2005, Oracle.? All rights reserved.
?
Connecting to(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=db2)(PORT=1521)))
STATUS of the LISTENER
------------------------
Alias???????????????????? LISTENER
Version?????????????????? TNSLSNR for Linux: Version10.2.0.1.0 - Production
Start Date??????????????? 12-JUL-2011 23:58:55
Uptime??????????????????? 6 days 1 hr. 33 min. 19 sec
Trace Level?????????????? off
Security????????????????? ON: Local OS Authentication
SNMP????????????????????? OFF
Listener Parameter File??/u01/app/oracle/product/10.2.0/db_1/network/admin/listener.ora
Listener Log File????????/u01/app/oracle/product/10.2.0/db_1/network/log/listener.log
Listening Endpoints Summary...
?(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=db2)(PORT=1521)))
Services Summary...
Service "PLSExtProc"has 1 instance(s).
? Instance"PLSExtProc", status UNKNOWN, has 1 handler(s) for this service...
Service "dave2" has 1 instance(s).
? Instance"dave2", status READY, has 1 handler(s) for this service...
Service "dave2XDB" has 1 instance(s).
? Instance"dave2", status READY, has 1 handler(s) for this service...
Service "dave2_XPT" has 1 instance(s).
?Instance "dave2", status READY, has 1 handler(s) for this service...
The command completed successfully
?
?????? 我們通常配置net service name,使用的service 和實例名是相同的。
?
1.2 官網對Service的說明
1.2.1 Purpose
?????? Toobtain detailed information about the database services, instances, and servicehandlers (dispatchers and dedicated servers) to which the listener forwardsclient connection requests.
?
1.2.2 Syntax
From the operating system:
?????? lsnrctlSERVICES listener_name
From the Listener Control utility:
?????? LSNRCTL>SERVICES listener_name
?
1.2.3 Arguments
listener_name: The listener name, if thedefault name of LISTENER is not used.
From:
http://download.oracle.com/docs/cd/E11882_01/network.112/e10835/lsnrctl.htm#NETRF112
二. 說明
??????
關于監聽的注冊問題,之前整理過一篇blog:
Oracle Listener 動態注冊 與 靜態注冊
http://blog.csdn.net/tianlesoftware/article/details/5543166
?
?????? 注冊到監聽器中的服務值從init.ora文件中的參數service_names取得。如果該參數沒有設定值,數據庫將拼接init.ora文件中的 db_name和db_domain的值來注冊自己。如果選擇提供service_names值,您可以使用完全限定的名稱(比如 orcl.oracle.com)或縮寫的名稱(比如orcl)。如果選擇縮寫的名稱并設置了db_domain參數,注冊到監聽器中的服務將是 service_name值和db_domain值的拼接。例如下面的設置將導致服務orcl.oracle.com被注冊到監聽器中:
db_domain=oracle.com
service_names=orcl ;
?
?????? 我的這個測試實例是dave2.并且沒有配置service_names,所以這里我們配置net service 使用的也是Dave2.
?
在services 里看到有如下幾個service:
Service "PLSExtProc" has 1instance(s).
Service "dave2" has 1instance(s).
Service "dave2XDB" has 1instance(s).
Service "dave2_XPT" has 1instance(s).
?
2.1 Dave2 service
?????? Dave2是我們實例的service。
?
2.2 Dave2XDB Service
?????? dave2XDB是XML database的serveice,這個在我之前的blog 有說明:
?????? How to Deinstall and Reinstall XML Database ORA-04063XDB.DBMS_XDBUTIL_INT
?????? http://blog.csdn.net/tianlesoftware/article/details/5587706
?
?????? How to configure XDB for using ftp and http protocols withASM
?????? http://blog.csdn.net/tianlesoftware/article/details/6337281
?
MOS 的文檔上有詳細說明:[ID 1292089.1]
?
當我們配置dispatchers參數之后,對應的service就可以自動變成可用狀態。
?
SYS@dave2(db2)> show parameterdispatchers
?
NAME???????????? TYPE???? ???VALUE
--------------------------- -----------------------------------------
dispatchers???????????????? string??????????? (PROTOCOL=TCP)(SERVICE=dave2XDB)
max_dispatchers???? integer
?
可以通過v$service 視圖查看:
SYS@dave2(db2)> select name fromv$services;????
NAME
----------------------------------------------------------------
dave2XDB
dave2
SYS$BACKGROUND
SYS$USERS
?
移除XDB 的方法,在10g的OTN上有說明:
http://download.oracle.com/docs/cd/B19306_01/appdev.102/b14259/appaman.htm#sthref2384
?
?????? Removethe dispatcher by removing the Oracle XML DB dispatcher entry from the init.orafile as follows:
?????? dispatchers="(PROTOCOL=TCP)(SERVICE=<sid>XDB)"
If the server parameter file is used, runthe following command when the instance is up and while logged in as SYS:
?????? ALTERSYSTEM RESET dispatchers scope=spfile sid='*';
?
示例:
SYS@dave2(db2)> ALTER SYSTEM RESETdispatchers scope=spfile sid='*';
System altered.
?
但是查看dba_services 還是可以查到該值:
SYS@dave2(db2)> select name fromdba_services where name='dave2XDB';
?
NAME
---------------
dave2XDB
?
SYS@dave2(db2)> show parameter dispatchers
?
NAME???????????? TYPE??????? VALUE
--------------------------- -----------------------------------------
dispatchers???????????????? string??????????? (PROTOCOL=TCP)(SERVICE=dave2XDB)
max_dispatchers???? integer
?
?
將監聽重啟一下:
[oracle@db2 ~]$ lsnrctl stop
?
LSNRCTL for Linux: Version 10.2.0.1.0 -Production on 19-JUL-2011 19:34:18
?
Copyright (c) 1991, 2005, Oracle.? All rights reserved.
?
Connecting to(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=db2)(PORT=1521)))
The command completed successfully
[oracle@db2 ~]$ lsnrctl start
?
LSNRCTL for Linux: Version 10.2.0.1.0 -Production on 19-JUL-2011 19:34:26
?
Copyright (c) 1991, 2005, Oracle.? All rights reserved.
?
Starting/u01/app/oracle/product/10.2.0/db_1/bin/tnslsnr: please wait...
?
TNSLSNR for Linux: Version 10.2.0.1.0 -Production
System parameter file is/u01/app/oracle/product/10.2.0/db_1/network/admin/listener.ora
Log messages written to/u01/app/oracle/product/10.2.0/db_1/network/log/listener.log
Listening on:(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=db2)(PORT=1521)))
?
Connecting to(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=db2)(PORT=1521)))
STATUS of the LISTENER
------------------------
Alias???????????????????? LISTENER
Version?????????????????? TNSLSNR for Linux: Version10.2.0.1.0 - Production
Start Date??????????????? 19-JUL-2011 19:34:27
Uptime??????????????????? 0 days 0 hr. 0 min. 0 sec
Trace Level?????????????? off
Security????????????????? ON: Local OS Authentication
SNMP????????????????????? OFF
Listener Parameter File??/u01/app/oracle/product/10.2.0/db_1/network/admin/listener.ora
Listener Log File????????/u01/app/oracle/product/10.2.0/db_1/network/log/listener.log
Listening Endpoints Summary...
?(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=db2)(PORT=1521)))
Services Summary...
Service "PLSExtProc"has 1 instance(s).
??Instance "PLSExtProc",status UNKNOWN, has 1 handler(s) for this service...
The command completed successfully
?
[oracle@db2 ~]$ lsnrctl service
LSNRCTL for Linux: Version 10.2.0.1.0 -Production on 19-JUL-2011 22:43:44
?
Copyright (c) 1991, 2005, Oracle. ?All rights reserved.
?
Connecting to(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=db2)(PORT=1521)))
Services Summary...
Service "PLSExtProc" has 1instance(s).
?Instance "PLSExtProc", status UNKNOWN, has 1 handler(s) forthis service...
???Handler(s):
???? ?"DEDICATED" established:0 refused:0
????????LOCAL SERVER
Service "dave2" has 1instance(s).
?Instance "dave2", status READY, has 1 handler(s) for thisservice...
???Handler(s):
?????"DEDICATED" established:0 refused:0 state:ready
????????LOCAL SERVER
Service "dave2_XPT" has 1instance(s).
?Instance "dave2", status READY, has 1 handler(s) for thisservice...
???Handler(s):
?????"DEDICATED" established:0 refused:0 state:ready
????????LOCAL SERVER
The command completed successfully
--SIDXDB 已經沒有了
?
SYS@dave2(db2)>show parameter dispa
NAME???????????????????????????????? TYPE??????? VALUE
----------------------------------------------- ------------------------------
dispatchers????????????????????????? string
max_dispatchers???????? ?????????????integer
?
通過參數已經看不到了。但通過dba_services還可以查到。
?
SYS@dave2(db2)> select name fromdba_services where name='dave2XDB';
NAME
----------------------------------------------------------------
dave2XDB
?
SYS@dave2(db2)> select comp_name,status, version from DBA_REGISTRY where comp_name='Oracle XML Database';
?
COMP_NAME?????? STATUS???????????????? VERSION
--------------- ----------------------------------------------------
Oracle XML Data ?????????? VALID?????????????????10.2.0.1.0
?
如果要停用XML DB 特性,可以drop xdb 服務
SYS@dave2(db2)> execdbms_service.delete_service('dave2XDB');
PL/SQL procedure successfully completed.
?
然后查看dba_services 視圖,就沒有該記錄了
SYS@dave2(db2)> select name fromdba_services where name='dave2XDB';
no rows selected
?
?
2.3. _XPT Service?????
?????? 在MOS 上有文檔對XPT? 說明 [ID 339940.1]
?
?????? 該service 是給Data Guard 預留的。 如果沒有使用DG ,刪除該服務沒有影響。 停用該service 需要修改一個參數:__dg_broker_service_names. 該參數前面是2個_.?這個需要注意一下。 這個參數是個隱含參數,使用如下SQL 查看:
?
SYS@dave2(db2)> SELECT?? ksppinm, ksppstvl, ksppdesc? FROM??x$ksppi x, x$ksppcv y? WHERE?? x.indx = y.indx AND TRANSLATE (ksppinm, '_','#') LIKE '#%' and ksppinm like '__dg_%';
?
KSPPINM?????????????????? KSPPSTVL??????? KSPPDESC
-------------------------------------------------- ----------------------------
__dg_broker_service_names??? dave2_XPT??????service names for broker use
更多內容參考:
?????? Oracle 參數分類 和 參數的查看方法
?????? http://blog.csdn.net/tianlesoftware/article/details/5583655
?
要停用該服務,把__dg_broker_service_names參數設置為空就ok了。
?
SYS@dave2(db2)> altersystem set "__dg_broker_service_names" = '' scope=both;
System altered.
?
[oracle@db2 ~]$ lsnrctl status
?
LSNRCTL for Linux: Version 10.2.0.1.0 -Production on 20-JUL-2011 01:22:17
?
Copyright (c) 1991, 2005, Oracle.? All rights reserved.
?
Connecting to(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=db2)(PORT=1521)))
STATUS of the LISTENER
------------------------
Alias???????????????????? LISTENER
Version?????????????????? TNSLSNR for Linux: Version10.2.0.1.0 - Production
Start Date??????????????? 19-JUL-2011 19:34:27
Uptime??????????????????? 0 days 5 hr. 47 min. 50 sec
Trace Level?????????????? off
Security????????????????? ON: Local OS Authentication
SNMP??????????????????? ??OFF
Listener Parameter File??/u01/app/oracle/product/10.2.0/db_1/network/admin/listener.ora
Listener Log File????????/u01/app/oracle/product/10.2.0/db_1/network/log/listener.log
Listening Endpoints Summary...
?(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=db2)(PORT=1521)))
Services Summary...
Service "PLSExtProc" has 1instance(s).
?Instance "PLSExtProc", status UNKNOWN, has 1 handler(s) forthis service...
Service "dave2" has 1instance(s).
?Instance "dave2", status READY, has 1 handler(s) for this service...
The command completed successfully
?
2.4 PLSExtProc Service
先看listener.ora文件,這個文件是在我們安裝數據庫的時候生成的。
[oracle@db2 admin]$ cat listener.ora
# listener.ora Network Configuration File:/u01/app/oracle/product/10.2.0/db_1/network/admin/listener.ora
# Generated by Oracle configuration tools.
?
SID_LIST_LISTENER =
?(SID_LIST =
???(SID_DESC =
?????(SID_NAME = PLSExtProc)
?????(ORACLE_HOME = /u01/app/oracle/product/10.2.0/db_1)
?????(PROGRAM = extproc)
??? )
? )
?
LISTENER =
?(DESCRIPTION_LIST =
???(DESCRIPTION =
?????(ADDRESS = (PROTOCOL = TCP)(HOST = db2)(PORT = 1521))
??? )
? )
?
?????? 其中的Listener配置的是實例的監聽信息。PLSExtProc 是一個外部程序的配置監聽,在默認安裝時,會安裝一個PL/SQL外部程序(ExtProc)條目在listener.ora中,是oracle為調用外部程序默認配置的監聽,它的名字通常是ExtProc或PLSExtProc,但一般不會使用它,可以直接從listener.ora中將這項移除,因為對ExtProc已經有多種攻擊手段了,在不使用外部程序時,oracle也是建議刪除的。
?????? PLSExtPro是pl/sqlexternal procdure 的意思,就是在pl/sql中調用外部語句,如c,java寫的過程。
?????? 現在,Oracle已經全面支持JAVA了,這東西也就過時了,之所以繼續保留是考慮到兼容以前老版本(Oracle8,9i)的數據庫實例。
??????
官網的說明如下:
?????? Youcan use the SID_LIST section of the listener.ora to statically configureservice information for the listener.
?????? The SID_LIST section is required for Oracle8 release 8.0 orOracle7 database services, as well as externalprocedure calls and HeterogeneousServices, and some management tools, including Oracle Enterprise Manager.
SID_LIST_listener_name=
?(SID_LIST=
??(SID_DESC=
???(GLOBAL_DBNAME=global_database_name)
???(SID_NAME=sid)
???(ORACLE_HOME=oracle_home))
??(SID_DESC=...))
?????? For later database releases, the listener uses thedynamic service information about the database and instance it has receivedthrough service registration before using statically configured information inthe listener.ora file. Therefore, the SID_LIST is notrequired, unless Oracle Enterprise Manager is used to monitor an Oracle9i orOracle8 database.
?
From:
http://download.oracle.com/docs/cd/B28359_01/network.111/b28317/listener.htm
?
?
?????? 所以,要停用PLSExtProc,只需要在listener.ora 里刪除這部分配置,然后restart listener 即可。
?
[oracle@db2 admin]$ cat listener.ora
#SID_LIST_LISTENER =
#?(SID_LIST =
#???(SID_DESC =
#?????(SID_NAME = PLSExtProc)
#?????(ORACLE_HOME = /u01/app/oracle/product/10.2.0/db_1)
#?????(PROGRAM = extproc)
#???)
#? )
?
[oracle@db2 admin]$lsnrctl stop
?
LSNRCTL for Linux: Version 10.2.0.1.0 -Production on 20-JUL-2011 01:42:40
Copyright (c) 1991, 2005, Oracle.? All rights reserved.
?
Connecting to(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=db2)(PORT=1521)))
The command completed successfully
[oracle@db2 admin]$ lsnrctl start
?
LSNRCTL for Linux: Version 10.2.0.1.0 -Production on 20-JUL-2011 01:42:53
?
Copyright (c) 1991, 2005, Oracle.? All rights reserved.
?
Starting/u01/app/oracle/product/10.2.0/db_1/bin/tnslsnr: please wait...
?
TNSLSNR for Linux: Version 10.2.0.1.0 -Production
System parameter file is/u01/app/oracle/product/10.2.0/db_1/network/admin/listener.ora
Log messages written to/u01/app/oracle/product/10.2.0/db_1/network/log/listener.log
Listening on:(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=db2)(PORT=1521)))
?
Connecting to(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=db2)(PORT=1521)))
STATUS of the LISTENER
------------------------
Alias???????????????????? LISTENER
Version?????????????????? TNSLSNR for Linux: Version10.2.0.1.0 - Production
Start Date??????? ????????20-JUL-2011 01:42:54
Uptime??????????????????? 0 days 0 hr. 0 min. 0 sec
Trace Level?????????????? off
Security????????????????? ON: Local OS Authentication
SNMP????????????????????? OFF
Listener Parameter File?? /u01/app/oracle/product/10.2.0/db_1/network/admin/listener.ora
Listener Log File????????/u01/app/oracle/product/10.2.0/db_1/network/log/listener.log
Listening Endpoints Summary...
?(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=db2)(PORT=1521)))
The listener supports noservices
The command completed successfully
--這里提示監聽沒有services,這中情況下,我們的遠程端是連不上數據庫的。我們通過service 確認一下:
?
[oracle@db2 admin]$lsnrctl service
?
LSNRCTL for Linux: Version 10.2.0.1.0 -Production on 20-JUL-2011 01:43:05
?
Copyright (c) 1991, 2005, Oracle.? All rights reserved.
?
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=db2)(PORT=1521)))
The listener supports noservices
The command completed successfully
?
出現這種現象的原因和動態注冊和靜態注冊有關。 在之前的blog里有說明:
Oracle Listener 動態注冊 與 靜態注冊
http://blog.csdn.net/tianlesoftware/article/details/5543166
?
?????? 因為我們沒有停數據庫,直接重啟的監聽,而且我們也沒有配置靜態注冊,在這種情況下,就出現了監聽沒有service的情況,我們只需要使用register命令,將實例注冊到監聽就ok了。
?
SYS@dave2(db2)> alter system register;
System altered.
?
在查看一下service:
[oracle@db2 ~]$ lsnrctl service
?
LSNRCTL for Linux: Version 10.2.0.1.0 - Productionon 20-JUL-2011 01:45:05
?
Copyright (c) 1991, 2005, Oracle.? All rights reserved.
?
Connecting to(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=db2)(PORT=1521)))
Services Summary...
Service "dave2"has 1 instance(s).
?Instance "dave2", status READY, has 1 handler(s) for thisservice...
???Handler(s):
?????"DEDICATED" established:0 refused:0 state:ready
????????LOCAL SERVER
The command completed successfully
?
現在監聽里就只有我們一個實例的service了。
?
?
?
?
?
?
-------------------------------------------------------------------------------------------------------
Blog: http://blog.csdn.net/tianlesoftware
Email: dvd.dba@gmail.com
DBA1 群:62697716(滿);?? DBA2 群:62697977(滿)??DBA3 群:62697850(滿)??
DBA 超級群:63306533(滿);? DBA4 群: 83829929? DBA5群: 142216823???
DBA6 群:158654907? 聊天 群:40132017?? 聊天2群:69087192
--加群需要在備注說明Oracle表空間和數據文件的關系,否則拒絕申請
轉載于:https://www.cnblogs.com/zlja/archive/2011/07/19/2449612.html
總結
以上是生活随笔為你收集整理的Oracle 监听(Listener) 中 services 说明的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 使用 asp.net mvc和 jQue
- 下一篇: poj 2421 Constructin