天天看點

Oracle:動态注冊

動态注冊:如果先啟執行個體,後起監聽器

               --顯示設定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.