oracle監聽之動態和靜態註冊
一:EM無法使用的解決:首先我們知道EM只支援動態註冊的監聽。哪怕是有動態註冊資訊就可以
首先我先配置了listener這個監聽,具體配置如下:
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = edb1.example.com)(PORT = 1521))
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
)
)
很顯然這個是動態監聽,正好這時候我用這個監聽配置了EM。
EM配置完成之後,我繼續配置lsnr2 ,具體配置如下:
LSNR2 =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = edb1.example.com)(PORT = 1526))
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1526))
)
)
要求要lsnr也能動態註冊到資料庫資訊,這時候我們發現這個監聽的埠非預設埠。然而oracle預設動態是註冊到1521埠上的,所有這時候lsnr2是不能動態註冊到資料庫資訊的,如下:
[oracle@edb1 admin]$ lsnrctl status lsnr2
LSNRCTL for Linux: Version 11.2.0.3.0 - Production on 05-JUL-2016 23:34:29
Copyright (c) 1991, 2011, Oracle. All rights reserved.
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=edb1.example.com)(PORT=1526)))
STATUS of the LISTENER
------------------------
Alias lsnr2
Version TNSLSNR for Linux: Version 11.2.0.3.0 - Production
Start Date 05-JUL-2016 23:34:06
Uptime 0 days 0 hr. 0 min. 22 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Listener Parameter File /u01/app/oracle/product/11.2.0/dbhome_1/network/admin/listener.ora
Listener Log File /u01/app/oracle/diag/tnslsnr/edbjr2p1/lsnr2/alert/log.xml
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=edb1.example.com)(PORT=1526)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1526)))
The listener supports no services
The command completed successfully
LSNRCTL for Linux: Version 11.2.0.3.0 - Production on 05-JUL-2016 23:34:29
Copyright (c) 1991, 2011, Oracle. All rights reserved.
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=edb1.example.com)(PORT=1526)))
STATUS of the LISTENER
------------------------
Alias lsnr2
Version TNSLSNR for Linux: Version 11.2.0.3.0 - Production
Start Date 05-JUL-2016 23:34:06
Uptime 0 days 0 hr. 0 min. 22 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Listener Parameter File /u01/app/oracle/product/11.2.0/dbhome_1/network/admin/listener.ora
Listener Log File /u01/app/oracle/diag/tnslsnr/edbjr2p1/lsnr2/alert/log.xml
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=edb1.example.com)(PORT=1526)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1526)))
The listener supports no services
The command completed successfully
可以透過 local_listener這個引數來修改oracle預設動態註冊的埠,使lsnr2可以動態註冊到資訊。
1)在tnsname.ora 檔案裡新增
LSNR2 =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = edb1.example.com)(PORT = 1526))
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1526))
)
)
2)然後 修改資料庫引數
sqlplus / as sysdba
SQL> alter system set local_listener='lSNR2';
SQL> alter system register; ###動態監聽如果先於資料庫啟動,那就不必要執行這個命令。
3)再次檢視監聽狀態,發現動態註冊到了資訊
[oracle@edbjr2p1 admin]$ lsnrctl status lsnr2
。。。。。。。
Services Summary...
這樣我覺得OK了,可是等到後面使用EM的時候,我發現報錯,說 database is down,
可是我檢查發現資料庫正常, 然後檢視監聽listener的狀態:發現原本動態註冊的資訊已經沒有了。如下:
[oracle@edb1 admin]$ lsnrctl status
LSNRCTL for Linux: Version 11.2.0.3.0 - Production on 05-JUL-2016 23:34:29
Copyright (c) 1991, 2011, Oracle. All rights reserved.
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=edb1.example.com)(PORT=1521)))
STATUS of the LISTENER
------------------------
Alias listener
Version TNSLSNR for Linux: Version 11.2.0.3.0 - Production
Start Date 05-JUL-2016 23:34:06
Uptime 0 days 0 hr. 0 min. 22 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Listener Parameter File /u01/app/oracle/product/11.2.0/dbhome_1/network/admin/listener.ora
Listener Log File /u01/app/oracle/diag/tnslsnr/edbjr2p1/lsnr2/alert/log.xml
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=edb1.example.com)(PORT=1521)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1526)))
The listener supports no services
The command completed successfully
LSNRCTL for Linux: Version 11.2.0.3.0 - Production on 05-JUL-2016 23:34:29
Copyright (c) 1991, 2011, Oracle. All rights reserved.
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=edb1.example.com)(PORT=1521)))
STATUS of the LISTENER
------------------------
Alias listener
Version TNSLSNR for Linux: Version 11.2.0.3.0 - Production
Start Date 05-JUL-2016 23:34:06
Uptime 0 days 0 hr. 0 min. 22 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Listener Parameter File /u01/app/oracle/product/11.2.0/dbhome_1/network/admin/listener.ora
Listener Log File /u01/app/oracle/diag/tnslsnr/edbjr2p1/lsnr2/alert/log.xml
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=edb1.example.com)(PORT=1521)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1526)))
The listener supports no services
The command completed successfully
可以推測出可能是這裡的原因導致報錯 :database is down
那麼是什麼原因導致的呢?
原來 當你設定local_listener=lsnr2後,資料庫資訊就會動態的註冊到1526埠,他就不會動態的註冊到1521,所以listener這個監聽註冊不到資訊,導致EM連結不到資料庫,報錯 database is down。
解決辦法:只需要修改引數 local_listener='listener','lsnr2'; 即可,這樣oracle會動態註冊到兩個埠上。
然後發現EM可以使用了。
二:關於oracle監聽動態和靜態的分析
oracle靜態監聽如下:
[oracle@edb1 admin]$ cat listener.ora
# listener.ora Network Configuration File: /u01/app/oracle/product/11.2.0/dbhome_1/network/admin/listener.ora
# Generated by Oracle configuration tools.
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = edb1.example.com)(PORT = 1521))
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
)
)
SID_LIST_LISTENER=
(SID_LIST=
(SID_DESC=
(GLOBAL_DBNAME=PROD1)
(ORACLE_HOME=/u01/app/oracle/product/11.2.0/dbhome_1)
(SID_NAME=PROD1))
(SID_DESC=
(SID_NAME=plsextproc)
(ORACLE_HOME=/u01/app/oracle/product/11.2.0/dbhome_1)
(PROGRAM=extproc)))
# listener.ora Network Configuration File: /u01/app/oracle/product/11.2.0/dbhome_1/network/admin/listener.ora
# Generated by Oracle configuration tools.
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = edb1.example.com)(PORT = 1521))
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
)
)
SID_LIST_LISTENER=
(SID_LIST=
(SID_DESC=
(GLOBAL_DBNAME=PROD1)
(ORACLE_HOME=/u01/app/oracle/product/11.2.0/dbhome_1)
(SID_NAME=PROD1))
(SID_DESC=
(SID_NAME=plsextproc)
(ORACLE_HOME=/u01/app/oracle/product/11.2.0/dbhome_1)
(PROGRAM=extproc)))
儘管是靜態監聽,但是他也會有動態註冊資訊,如下 ready代表動態,unknown代表靜態。如果你剛才用這樣的話已經配置好的EM是可以使用這個監聽的,可不要認為靜態監聽也可以了,真正的原因是雖然是靜態監聽配置,但是oracle會預設動態的註冊到1521這個埠上,所以既有動態又有靜態的註冊資訊(前提是沒有修改local_listener這個引數)
[oracle@edb1 admin]$ lsnrctl status
LSNRCTL for Linux: Version 11.2.0.3.0 - Production on 05-JUL-2016 23:45:04
Copyright (c) 1991, 2011, Oracle. All rights reserved.
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=edb1.example.com)(PORT=1521)))
STATUS of the LISTENER
------------------------
Alias LISTENER
Version TNSLSNR for Linux: Version 11.2.0.3.0 - Production
Start Date 05-JUL-2016 23:43:44
Uptime 0 days 0 hr. 1 min. 20 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Listener Parameter File /u01/app/oracle/product/11.2.0/dbhome_1/network/admin/listener.ora
Listener Log File /u01/app/oracle/diag/tnslsnr/edbjr2p1/listener/alert/log.xml
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=edb1.example.com)(PORT=1521)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))
LSNRCTL for Linux: Version 11.2.0.3.0 - Production on 05-JUL-2016 23:45:04
Copyright (c) 1991, 2011, Oracle. All rights reserved.
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=edb1.example.com)(PORT=1521)))
STATUS of the LISTENER
------------------------
Alias LISTENER
Version TNSLSNR for Linux: Version 11.2.0.3.0 - Production
Start Date 05-JUL-2016 23:43:44
Uptime 0 days 0 hr. 1 min. 20 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Listener Parameter File /u01/app/oracle/product/11.2.0/dbhome_1/network/admin/listener.ora
Listener Log File /u01/app/oracle/diag/tnslsnr/edbjr2p1/listener/alert/log.xml
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=edb1.example.com)(PORT=1521)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))
Services Summary...
Service "PROD1" has 1 instance(s).
Instance "PROD1", status UNKNOWN, has 1 handler(s) for this service...
Service "PROD1.us.oracle.com" has 1 instance(s).
Instance "PROD1", status READY, has 1 handler(s) for this service...
Service "PROD1XDB.us.oracle.com" has 1 instance(s).
Instance "PROD1", status READY, has 1 handler(s) for this service...
Service "plsextproc" has 1 instance(s).
Instance "plsextproc", status UNKNOWN, has 1 handler(s) for this service...
The command completed successfully
如果你配置EM使用的監聽沒有動態註冊資訊,那麼當你使用EM的時候就會報錯,具體如下:
小結:EM管理器,配置和使用只支援動態註冊的監聽,如果你剛開始是用動態註冊的監聽配置好了EM,你又把動態的監聽改成了靜態的,這時候你沒有修改local_listener這個引數,正常情況還是可以使用EM的,因為這時候你的監聽既有靜態註冊資訊又有動態註冊資訊,EM使用的是動態資訊,說白了就是保證有動態註冊的資訊即可。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29654823/viewspace-2121591/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- oracle監聽靜態註冊和動態註冊Oracle
- Oracle監聽的靜態註冊和動態註冊Oracle
- 【監聽】動態註冊和靜態註冊
- oracle監聽動態註冊與靜態註冊Oracle
- oracle監聽器的靜態和動態註冊Oracle
- Oracle監聽的動態註冊與靜態註冊Oracle
- oracle監聽動態註冊與靜態註冊[轉帖]Oracle
- 轉載:oracle監聽器的靜態和動態註冊Oracle
- oracle監聽器動態註冊於靜態註冊的區別Oracle
- oracle靜態監聽和動態監聽Oracle
- ORACLE 動態註冊,靜態註冊,多個監聽,一個監聽多個埠配置Oracle
- 動態和靜態監聽註冊-小魚的理解
- Oracle 靜態監聽註冊詳解Oracle
- Oracle 動態監聽註冊Oracle
- oracle 監聽器動態與靜態註冊服務_listenerOracle
- Oracle listener靜態註冊和動態註冊Oracle
- oracle的靜態註冊和動態註冊Oracle
- oracle動態和靜態監聽listenerOracle
- 動態監聽和靜態監聽
- 監聽動態註冊
- 動態註冊監聽
- 動態監聽註冊
- oracle listener 靜態和動態註冊Oracle
- ORACLE動態監聽與靜態監聽Oracle
- 【oracle】動態監聽與靜態監聽Oracle
- 動態註冊和靜態註冊
- 靜態註冊和動態註冊
- oracle 監聽 靜態 動態Oracle
- Oracle監聽器的靜態註冊與動態註冊,以及DB_DOMAIN問題OracleAI
- 【listener】oracle靜態監聽和動態監聽 【轉載】Oracle
- Oracle動態監聽註冊測試Oracle
- Oracle listener靜態註冊和動態註冊總結Oracle
- rac監聽動態註冊
- 動態註冊監聽Listener
- Oracle Listener 動態註冊 與 靜態註冊Oracle
- Oracle Listener 動態註冊與靜態註冊Oracle
- 【原創】Oracle的動態監聽註冊Oracle
- 動態監聽與靜態監聽