感受一下Oracle数据库实例的动态监听注册细节。有如下这样一个规律,先总结在这里:
①如果是先启动监听,后启动数据库实例,则动态监听会自动识别到启动的数据库实例;
②在数据库实例正常运行的情况下重启监听,则数据库实例会等很长时间才能在动态监听中注册成功,大约需要1分钟的等待时间;
③如果是先启动数据库实例,后启动监听,效果和②一样;
④如果不希望长时间等待动态监听注册的过程,可以使用“alter system register;”命令加速。
真实的体验一下这个过程。切身体验之后这些结论将显得那样的自然和纯真。
1.第①种场景模拟
1)在数据库实例未启动时启动监听程序
ora11g@secdb /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)随即查看监听状态
sys@ora11g>
!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)手工停启监听程序
sys@ora11g>
!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
sys@ora11g>
!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)每隔一秒检查一下监听的状态
sys@ora11g>
!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
……省略部分状态检查信息……
sys@ora11g>
!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
……省略部分状态检查信息……
sys@ora11g>
!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
……省略部分状态检查信息……
sys@ora11g>
!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成功