动态注册:如果先启实例,后起监听器
--显示设置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.