動态注冊:如果先啟執行個體,後起監聽器
--顯示設定instance_name和service_name,則要等待約一分鐘執行個體才能注冊到監聽器中
alter system register 加速後起監聽器時的動态注冊
--沒有顯示設定instance_name和service_name,則不能注冊執行個體到監聽器
http://www.examda.com/oracle/zonghe/20100720/091148769.html
感受一下Oracle資料庫執行個體的動态監聽注冊細節。有如下這樣一個規律,先總結在這裡:
①如果是先啟動監聽,後啟動資料庫執行個體,則動态監聽會自動識别到啟動的資料庫執行個體;
②在資料庫執行個體正常運作的情況下重新開機監聽,則資料庫執行個體會等很長時間才能在動态監聽中注冊成功,大約需要1分鐘的等待時間;
③如果是先啟動資料庫執行個體,後啟動監聽,效果和②一樣;
④如果不希望長時間等待動态監聽注冊的過程,可以使用“alter system register;”指令加速。
要實作偵聽的動态注冊,不僅僅要配置好初始化檔案,配置好listener.ora檔案,還需要檢查/etc/hosts檔案中本機的IP是否配置正确。
真實的體驗一下這個過程。切身體驗之後這些結論将顯得那樣的自然和純真。
1.第①種場景模拟
1)在資料庫執行個體未啟動時啟動監聽程式
[email protected] /home/oracle$ sqlplus / as sysdba
SQL*Plus: Release 11.2.0.1.0 Production on Tue Jan 18 20:47:22 2011
Copyright (c) 1982, 2009, Oracle. All rights reserved.
Connected to an idle instance.
NotConnected@> !lsnrctl status
LSNRCTL for Linux: Version 11.2.0.1.0 - Production on 18-JAN-2011 20:48:58
Copyright (c) 1991, 2009, Oracle. All rights reserved.
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1521)))
STATUS of the LISTENER
------------------------
Alias LISTENER
Version TNSLSNR for Linux: Version 11.2.0.1.0 - Production
Start Date 29-DEC-2010 02:03:55
Uptime 20 days 18 hr. 45 min. 3 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Listener Parameter File /oracle/ora11gR2/product/11.2.0/dbhome_1/network/admin/listener.ora
Listener Log File /oracle/ora11gR2/diag/tnslsnr/secdb/listener/alert/log.xml
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=secdb)(PORT=1521)))
The listener supports no services
The command completed successfully
因為資料庫執行個體沒有啟動,監聽理所當然地處于未檢測到任何執行個體的狀态。
2)啟動資料庫執行個體
NotConnected@> startup;
ORACLE instance started.
Total System Global Area 535662592 bytes
Fixed Size 1337720 bytes
Variable Size 411043464 bytes
Database Buffers 117440512 bytes
Redo Buffers 5840896 bytes
Database mounted.
Database opened.
3)随即檢視監聽狀态
[email protected]> !lsnrctl status
LSNRCTL for Linux: Version 11.2.0.1.0 - Production on 18-JAN-2011 20:49:15
Copyright (c) 1991, 2009, Oracle. All rights reserved.
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1521)))
STATUS of the LISTENER
------------------------
Alias LISTENER
Version TNSLSNR for Linux: Version 11.2.0.1.0 - Production
Start Date 29-DEC-2010 02:03:55
Uptime 20 days 18 hr. 45 min. 20 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Listener Parameter File /oracle/ora11gR2/product/11.2.0/dbhome_1/network/admin/listener.ora
Listener Log File /oracle/ora11gR2/diag/tnslsnr/secdb/listener/alert/log.xml
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=secdb)(PORT=1521)))
Services Summary...
Service "ora11g" has 1 instance(s).
Instance "ora11g", status READY, has 1 handler(s) for this service...
The command completed successfully
第①種場景結論得到印證:
①如果是先啟動監聽,後啟動資料庫執行個體,則動态監聽會自動識别到啟動的資料庫執行個體;
2.第②種場景模拟
1)手工停啟監聽程式
[email protected]> !lsnrctl stop
LSNRCTL for Linux: Version 11.2.0.1.0 - Production on 18-JAN-2011 20:52:55
Copyright (c) 1991, 2009, Oracle. All rights reserved.
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1521)))
The command completed successfully
[email protected]> !lsnrctl start
LSNRCTL for Linux: Version 11.2.0.1.0 - Production on 18-JAN-2011 20:53:03
Copyright (c) 1991, 2009, Oracle. All rights reserved.
Starting /oracle/ora11gR2/product/11.2.0/dbhome_1/bin/tnslsnr: please wait...
TNSLSNR for Linux: Version 11.2.0.1.0 - Production
System parameter file is /oracle/ora11gR2/product/11.2.0/dbhome_1/network/admin/listener.ora
Log messages written to /oracle/ora11gR2/diag/tnslsnr/secdb/listener/alert/log.xml
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=secdb)(PORT=1521)))
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1521)))
STATUS of the LISTENER
------------------------
Alias LISTENER
Version TNSLSNR for Linux: Version 11.2.0.1.0 - Production
Start Date 18-JAN-2011 20:53:03
Uptime 0 days 0 hr. 0 min. 0 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Listener Parameter File /oracle/ora11gR2/product/11.2.0/dbhome_1/network/admin/listener.ora
Listener Log File /oracle/ora11gR2/diag/tnslsnr/secdb/listener/alert/log.xml
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=secdb)(PORT=1521)))
The listener supports no services
The command completed successfully
2)每隔一秒檢查一下監聽的狀态
[email protected]> !lsnrctl status
LSNRCTL for Linux: Version 11.2.0.1.0 - Production on 18-JAN-2011 20:53:11
Copyright (c) 1991, 2009, Oracle. All rights reserved.
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1521)))
STATUS of the LISTENER
------------------------
Alias LISTENER
Version TNSLSNR for Linux: Version 11.2.0.1.0 - Production
Start Date 18-JAN-2011 20:53:03
Uptime 0 days 0 hr. 0 min. 7 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Listener Parameter File /oracle/ora11gR2/product/11.2.0/dbhome_1/network/admin/listener.ora
Listener Log File /oracle/ora11gR2/diag/tnslsnr/secdb/listener/alert/log.xml
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=secdb)(PORT=1521)))
The listener supports no services
The command completed successfully
……省略部分狀态檢查資訊……
[email protected]> !lsnrctl status
LSNRCTL for Linux: Version 11.2.0.1.0 - Production on 18-JAN-2011 20:53:14
Copyright (c) 1991, 2009, Oracle. All rights reserved.
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1521)))
STATUS of the LISTENER
------------------------
Alias LISTENER
Version TNSLSNR for Linux: Version 11.2.0.1.0 - Production
Start Date 18-JAN-2011 20:53:03
Uptime 0 days 0 hr. 0 min. 11 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Listener Parameter File /oracle/ora11gR2/product/11.2.0/dbhome_1/network/admin/listener.ora
Listener Log File /oracle/ora11gR2/diag/tnslsnr/secdb/listener/alert/log.xml
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=secdb)(PORT=1521)))
The listener supports no services
The command completed successfully
……省略部分狀态檢查資訊……
[email protected]> !lsnrctl status
LSNRCTL for Linux: Version 11.2.0.1.0 - Production on 18-JAN-2011 20:53:22
Copyright (c) 1991, 2009, Oracle. All rights reserved.
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1521)))
STATUS of the LISTENER
------------------------
Alias LISTENER
Version TNSLSNR for Linux: Version 11.2.0.1.0 - Production
Start Date 18-JAN-2011 20:53:03
Uptime 0 days 0 hr. 0 min. 18 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Listener Parameter File /oracle/ora11gR2/product/11.2.0/dbhome_1/network/admin/listener.ora
Listener Log File /oracle/ora11gR2/diag/tnslsnr/secdb/listener/alert/log.xml
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=secdb)(PORT=1521)))
The listener supports no services
The command completed successfully
……省略部分狀态檢查資訊……
[email protected]> !lsnrctl status
LSNRCTL for Linux: Version 11.2.0.1.0 - Production on 18-JAN-2011 20:53:58
Copyright (c) 1991, 2009, Oracle. All rights reserved.
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1521)))
STATUS of the LISTENER
------------------------
Alias LISTENER
Version TNSLSNR for Linux: Version 11.2.0.1.0 - Production
Start Date 18-JAN-2011 20:53:03
Uptime 0 days 0 hr. 0 min. 55 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Listener Parameter File /oracle/ora11gR2/product/11.2.0/dbhome_1/network/admin/listener.ora
Listener Log File /oracle/ora11gR2/diag/tnslsnr/secdb/listener/alert/log.xml
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=secdb)(PORT=1521)))
The listener supports no services
The command completed successfully
可見,直到20:53:58時資料庫執行個體仍然沒有注冊到監聽中,此時距離啟動監聽的時候20:53:03已經過去55秒。
最後是在20:53:59成功完成注冊。
[email protected]> !lsnrctl status
LSNRCTL for Linux: Version 11.2.0.1.0 - Production on 18-JAN-2011 20:53:59
Copyright (c) 1991, 2009, Oracle. All rights reserved.
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1521)))
STATUS of the LISTENER
------------------------
Alias LISTENER
Version TNSLSNR for Linux: Version 11.2.0.1.0 - Production
Start Date 18-JAN-2011 20:53:03
Uptime 0 days 0 hr. 0 min. 56 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Listener Parameter File /oracle/ora11gR2/product/11.2.0/dbhome_1/network/admin/listener.ora
Listener Log File /oracle/ora11gR2/diag/tnslsnr/secdb/listener/alert/log.xml
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=secdb)(PORT=1521)))
Services Summary...
Service "ora11g" has 1 instance(s).
Instance "ora11g", status READY, has 1 handler(s) for this service...
The command completed successfully
距離啟動監聽時間56秒,大約用了1分鐘的時間才完成資料庫執行個體到監聽的動态注冊。
第②種場景結論得到印證:
②如果是先啟動資料庫執行個體,後啟動監聽,則資料庫執行個體會等很長時間才能在動态監聽中注冊成功,大約需要1分鐘的等待時間;
3.第③種場景和第②種場景式樣的,不贅述。
4.第④種場景模拟
模拟這個場景比較簡單,隻需要連續執行如下這幾條指令即可。
!lsnrctl stop
!lsnrctl start
!lsnrctl status
alter system register;
!lsnrctl status
以下是連續執行後的結果。
1)停止監聽程式
[email protected]> !lsnrctl stop
LSNRCTL for Linux: Version 11.2.0.1.0 - Production on 18-JAN-2011 21:30:40
Copyright (c) 1991, 2009, Oracle. All rights reserved.
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1521)))
The command completed successfully
2)啟動監聽程式
[email protected]> !lsnrctl start
LSNRCTL for Linux: Version 11.2.0.1.0 - Production on 18-JAN-2011 21:30:44
Copyright (c) 1991, 2009, Oracle. All rights reserved.
Starting /oracle/ora11gR2/product/11.2.0/dbhome_1/bin/tnslsnr: please wait...
TNSLSNR for Linux: Version 11.2.0.1.0 - Production
System parameter file is /oracle/ora11gR2/product/11.2.0/dbhome_1/network/admin/listener.ora
Log messages written to /oracle/ora11gR2/diag/tnslsnr/secdb/listener/alert/log.xml
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=secdb)(PORT=1521)))
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1521)))
STATUS of the LISTENER
------------------------
Alias LISTENER
Version TNSLSNR for Linux: Version 11.2.0.1.0 - Production
Start Date 18-JAN-2011 21:30:44
Uptime 0 days 0 hr. 0 min. 0 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Listener Parameter File /oracle/ora11gR2/product/11.2.0/dbhome_1/network/admin/listener.ora
Listener Log File /oracle/ora11gR2/diag/tnslsnr/secdb/listener/alert/log.xml
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=secdb)(PORT=1521)))
The listener supports no services
The command completed successfully
3)檢視監聽狀态
[email protected]> !lsnrctl status
LSNRCTL for Linux: Version 11.2.0.1.0 - Production on 18-JAN-2011 21:30:44
Copyright (c) 1991, 2009, Oracle. All rights reserved.
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1521)))
STATUS of the LISTENER
------------------------
Alias LISTENER
Version TNSLSNR for Linux: Version 11.2.0.1.0 - Production
Start Date 18-JAN-2011 21:30:44
Uptime 0 days 0 hr. 0 min. 0 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Listener Parameter File /oracle/ora11gR2/product/11.2.0/dbhome_1/network/admin/listener.ora
Listener Log File /oracle/ora11gR2/diag/tnslsnr/secdb/listener/alert/log.xml
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=secdb)(PORT=1521)))
The listener supports no services
The command completed successfully
此時,監聽未檢測到資料庫執行個體資訊。
4)手工強制将資料庫執行個體注冊到監聽
[email protected]> alter system register;
System altered.
5)最後确認監聽狀态
[email protected]> !lsnrctl status
LSNRCTL for Linux: Version 11.2.0.1.0 - Production on 18-JAN-2011 21:30:44
Copyright (c) 1991, 2009, Oracle. All rights reserved.
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1521)))
STATUS of the LISTENER
------------------------
Alias LISTENER
Version TNSLSNR for Linux: Version 11.2.0.1.0 - Production
Start Date 18-JAN-2011 21:30:44
Uptime 0 days 0 hr. 0 min. 0 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Listener Parameter File /oracle/ora11gR2/product/11.2.0/dbhome_1/network/admin/listener.ora
Listener Log File /oracle/ora11gR2/diag/tnslsnr/secdb/listener/alert/log.xml
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=secdb)(PORT=1521)))
Services Summary...
Service "ora11g" has 1 instance(s).
Instance "ora11g", status READY, has 1 handler(s) for this service...
The command completed successfully
通過手工注冊資料庫執行個體的方法,立杆見影,執行個體旋即注冊到了監聽程式中。
第④種場景結論得到印證:
④如果不希望長時間等待動态監聽注冊的過程,可以使用“alter system register;”指令加速。
5.小結
如果您能将這個過程“躬親”一下,也許會有這種很美妙的感覺:一切都是那樣的自然而和諧。
再次将有關動态監聽的結論附在這裡:
①如果是先啟動監聽,後啟動資料庫執行個體,則動态監聽會自動識别到啟動的資料庫執行個體;
②在資料庫執行個體正常運作的情況下重新開機監聽,則執行個體會等很長時間才能在動态監聽中注冊成功,大約需要1分鐘的等待時間;
③如果是先啟動資料庫執行個體,後啟動監聽,效果和②一樣;
④如果不希望長時間等待動态監聽注冊的過程,可以使用“alter system register;”指令加速。
Good luck.