使用“alter system register;”解決動態(tài)監(jiān)聽注冊緩慢問題
- 分類:博文-IT資訊
- 發(fā)布于 2017年12月08日 星期五 17:58
- 作者:Super User
- 點擊數(shù):25854
感受一下Oracle數(shù)據(jù)庫實例的動態(tài)監(jiān)聽注冊細節(jié)。有如下這樣一個規(guī)律,先總結(jié)在這里:
①如果是先啟動監(jiān)聽,后啟動數(shù)據(jù)庫實例,則動態(tài)監(jiān)聽會自動識別到啟動的數(shù)據(jù)庫實例;
②在數(shù)據(jù)庫實例正常運行的情況下重啟監(jiān)聽,則數(shù)據(jù)庫實例會等很長時間才能在動態(tài)監(jiān)聽中注冊成功,大約需要1分鐘的等待時間;
③如果是先啟動數(shù)據(jù)庫實例,后啟動監(jiān)聽,效果和②一樣;
④如果不希望長時間等待動態(tài)監(jiān)聽注冊的過程,可以使用“alter system register;”命令加速。
真實的體驗一下這個過程。切身體驗之后這些結(jié)論將顯得那樣的自然和純真。
1.第①種場景模擬
1)在數(shù)據(jù)庫實例未啟動時啟動監(jiān)聽程序
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
因為數(shù)據(jù)庫實例沒有啟動,監(jiān)聽理所當然地處于未檢測到任何實例的狀態(tài)。
2)啟動數(shù)據(jù)庫實例
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)隨即查看監(jiān)聽狀態(tài)
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
第①種場景結(jié)論得到印證:
①如果是先啟動監(jiān)聽,后啟動數(shù)據(jù)庫實例,則動態(tài)監(jiān)聽會自動識別到啟動的數(shù)據(jù)庫實例;
2.第②種場景模擬
1)手工停啟監(jiān)聽程序
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)每隔一秒檢查一下監(jiān)聽的狀態(tài)
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
……省略部分狀態(tài)檢查信息……
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
……省略部分狀態(tài)檢查信息……
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
……省略部分狀態(tài)檢查信息……
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時數(shù)據(jù)庫實例仍然沒有注冊到監(jiān)聽中,此時距離啟動監(jiān)聽的時候20:53:03已經(jīng)過去55秒。
最后是在20:53:59成功完成注冊。
sys@ora11g> !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
距離啟動監(jiān)聽時間56秒,大約用了1分鐘的時間才完成數(shù)據(jù)庫實例到監(jiān)聽的動態(tài)注冊。
第②種場景結(jié)論得到印證:
②如果是先啟動數(shù)據(jù)庫實例,后啟動監(jiān)聽,則數(shù)據(jù)庫實例會等很長時間才能在動態(tài)監(jiān)聽中注冊成功,大約需要1分鐘的等待時間;
3.第③種場景和第②種場景式樣的,不贅述。
4.第④種場景模擬
模擬這個場景比較簡單,只需要連續(xù)執(zhí)行如下這幾條命令即可。
!lsnrctl stop
!lsnrctl start
!lsnrctl status
alter system register;
!lsnrctl status
以下是連續(xù)執(zhí)行后的結(jié)果。
1)停止監(jiān)聽程序
sys@ora11g> !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)啟動監(jiān)聽程序
sys@ora11g> !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)查看監(jiān)聽狀態(tài)
sys@ora11g> !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
此時,監(jiān)聽未檢測到數(shù)據(jù)庫實例信息。
4)手工強制將數(shù)據(jù)庫實例注冊到監(jiān)聽
sys@ora11g> alter system register;
System altered.
5)最后確認監(jiān)聽狀態(tài)
sys@ora11g> !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
通過手工注冊數(shù)據(jù)庫實例的方法,立桿見影,實例旋即注冊到了監(jiān)聽程序中。
第④種場景結(jié)論得到印證:
④如果不希望長時間等待動態(tài)監(jiān)聽注冊的過程,可以使用“alter system register;”命令加速。
5.小結(jié)
如果您能將這個過程“躬親”一下,也許會有這種很美妙的感覺:一切都是那樣的自然而和諧。
再次將有關(guān)動態(tài)監(jiān)聽的結(jié)論附在這里:
①如果是先啟動監(jiān)聽,后啟動數(shù)據(jù)庫實例,則動態(tài)監(jiān)聽會自動識別到啟動的數(shù)據(jù)庫實例;
②在數(shù)據(jù)庫實例正常運行的情況下重啟監(jiān)聽,則實例會等很長時間才能在動態(tài)監(jiān)聽中注冊成功,大約需要1分鐘的等待時間;
③如果是先啟動數(shù)據(jù)庫實例,后啟動監(jiān)聽,效果和②一樣;
④如果不希望長時間等待動態(tài)監(jiān)聽注冊的過程,可以使用“alter system register;”命令加速。