Oracle Listener
oracle listener註冊方式兩種:動態註冊和靜態註冊。
1、靜態註冊:即例項啟動時讀取listener.ora檔案的配置,將例項和服務註冊到監聽程式。無論何時啟動一個資料庫,預設地都有兩條資訊註冊到監聽器中:資料庫伺服器對應的例項和對外服務。
如在listener.ora檔案中:
在客戶端的tnsnames.ora檔案中就可以新增:
py =
動態非預設註冊(即埠非1521):
Listener.ora中新增:
LSNR2 =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = paynefu)(PORT = 1522))
)
再配置local_listener引數:
alter system set local_listener='(ADDRESS = (PROTOCOL = TCP)(HOST = paynefu)(PORT = 1522))';
C:\Documents and Settings\Administrator>lsnrctl status lsnr2
LSNRCTL for 32-bit Windows: Version 10.2.0.1.0 - Production on 31-5月 -2013 09:
5:35
Copyright (c) 1991, 2005, Oracle. All rights reserved.
正在連線到 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=paynefu)(PORT=1522)))
LISTENER 的 STATUS
------------------------
別名 lsnr2
版本 TNSLSNR for 32-bit Windows: Version 10.2.0.1.0 - Prod
ction
啟動日期 31-5月 -2013 09:03:57
正常執行時間 0 天 0 小時 1 分 42 秒
跟蹤級別 off
安全性 ON: Local OS Authentication
SNMP OFF
監聽程式引數檔案 D:\oracle\product\10.2.0\db_1\network\admin\listener.
ra
監聽程式日誌檔案 D:\oracle\product\10.2.0\db_1\network\log\lsnr2.log
監聽端點概要...
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=paynefu)(PORT=1522)))
服務摘要..
服務 "fb" 包含 1 個例程。 ——————該服務名就是資料庫中的service_names.db_domain,如下:
SQL> show parameter db_domain
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_domain string
SQL> show parameter service_name
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
service_names string fb (這個service_names可以為多個,就如靜態註冊中的global_dbname,對外提供服務)
例程 "fb", 狀態 READY, 包含此服務的 1 個處理程式... ——————例項名
服務 "fbXDB" 包含 1 個例程。
例程 "fb", 狀態 READY, 包含此服務的 1 個處理程式...
服務 "fb_XPT" 包含 1 個例程。
例程 "fb", 狀態 READY, 包含此服務的 1 個處理程式...
命令執行成功
建議:一個對外的服務名對應一個客戶端,這樣有利於網路資源監控、問題的判斷
3、如何區分是動態註冊還是靜態註冊?
lsnrctl status一下:
Alias LISTENER
1、靜態註冊:即例項啟動時讀取listener.ora檔案的配置,將例項和服務註冊到監聽程式。無論何時啟動一個資料庫,預設地都有兩條資訊註冊到監聽器中:資料庫伺服器對應的例項和對外服務。
如在listener.ora檔案中:
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = PLSExtProc)
(ORACLE_HOME = /db/oracle/product/11.2.0/db_1)
(PROGRAM = extproc)
)
(SID_DESC =
(GLOBAL_DBNAME = paynepm) #paynepm為對外服務
(ORACLE_HOME = /db/oracle/product/11.2.0/db_1)
(SID_NAME = payne) #payne為例項名
)
(SID_DESC =
(GLOBAL_DBNAME = paynefu) #paynefu為對外服務
(ORACLE_HOME = /db/oracle/product/11.2.0/db_1)
(SID_NAME = payne) #payne為例項名
)
)
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.169.0.200)(PORT = 1521))
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0))
)
)
在客戶端的tnsnames.ora檔案中就可以新增:
py =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.169.0.200)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = paynepm)
)
)
或
在客戶端測試
SQL> conn ff/ff@py
或
py =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.169.0.200)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = paynefu)
)
) 在客戶端測試
SQL> conn ff/ff@py
已連線。
2、動態註冊:在instance啟動的時候PMON程式根據init.ora中的instance_name,service_names兩個引數將例項和服務動態註冊到listener中。採取動態註冊方法時,listener.ora中的內容如下:
預設動態註冊:
2、動態註冊:在instance啟動的時候PMON程式根據init.ora中的instance_name,service_names兩個引數將例項和服務動態註冊到listener中。採取動態註冊方法時,listener.ora中的內容如下:
預設動態註冊:
LSNR1 =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = paynefu)(PORT= 1521))
)
)
動態註冊預設只註冊到預設的監聽器上(埠是1521、協議是TCP),因為pmon只會動態註冊port等於1521的監聽,否則pmon不能動態註冊listener,如果需要向非預設監聽註冊,則需要配置local_listener引數!動態預設註冊與非預設註冊都是透過local_listener引數來判斷的,如果值為空,則是預設註冊,若為非空,則是非預設註冊。如下:動態非預設註冊(即埠非1521):
Listener.ora中新增:
LSNR2 =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = paynefu)(PORT = 1522))
)
再配置local_listener引數:
alter system set local_listener='(ADDRESS = (PROTOCOL = TCP)(HOST = paynefu)(PORT = 1522))';
C:\Documents and Settings\Administrator>lsnrctl status lsnr2
LSNRCTL for 32-bit Windows: Version 10.2.0.1.0 - Production on 31-5月 -2013 09:
5:35
Copyright (c) 1991, 2005, Oracle. All rights reserved.
正在連線到 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=paynefu)(PORT=1522)))
LISTENER 的 STATUS
------------------------
別名 lsnr2
版本 TNSLSNR for 32-bit Windows: Version 10.2.0.1.0 - Prod
ction
啟動日期 31-5月 -2013 09:03:57
正常執行時間 0 天 0 小時 1 分 42 秒
跟蹤級別 off
安全性 ON: Local OS Authentication
SNMP OFF
監聽程式引數檔案 D:\oracle\product\10.2.0\db_1\network\admin\listener.
ra
監聽程式日誌檔案 D:\oracle\product\10.2.0\db_1\network\log\lsnr2.log
監聽端點概要...
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=paynefu)(PORT=1522)))
服務摘要..
服務 "fb" 包含 1 個例程。 ——————該服務名就是資料庫中的service_names.db_domain,如下:
SQL> show parameter db_domain
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_domain string
SQL> show parameter service_name
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
service_names string fb (這個service_names可以為多個,就如靜態註冊中的global_dbname,對外提供服務)
例程 "fb", 狀態 READY, 包含此服務的 1 個處理程式... ——————例項名
服務 "fbXDB" 包含 1 個例程。
例程 "fb", 狀態 READY, 包含此服務的 1 個處理程式...
服務 "fb_XPT" 包含 1 個例程。
例程 "fb", 狀態 READY, 包含此服務的 1 個處理程式...
命令執行成功
建議:一個對外的服務名對應一個客戶端,這樣有利於網路資源監控、問題的判斷
3、如何區分是動態註冊還是靜態註冊?
lsnrctl status一下:
Alias LISTENER
Version TNSLSNR for Linux: Version 11.2.0.1.0 - Production
Start Date 03-MAY-2013 15:33:22
Uptime 0 days 0 hr. 16 min. 14 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Listener Parameter File /db/oracle/product/11.2.0/db_1/network/admin/listener.ora
Listener Log File /db/oracle/diag/tnslsnr/for11g/listener/alert/log.xml
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.169.0.200)(PORT=1521)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC0)))
Services Summary...
Service "PLSExtProc" has 1 instance(s).
Instance "PLSExtProc", status UNKNOWN, has 1 handler(s) for this service...
Service "paynefu" has 1 instance(s).
Instance "payne", status UNKNOWN, has 1 handler(s) for this service...
Service "paynepm" has 1 instance(s).
Instance "payne", status UNKNOWN, has 1 handler(s) for this service...
The command completed successfully
看到上面的UNKNOWN沒? 表示靜態註冊的設定,這時監聽器用來表明它不知道關於該例項的任何資訊,只有當客戶發出連線請求時,它才檢查該例項是否存在。
動態註冊的資料庫透過狀態資訊中的狀態READY或狀態BLOCKED(對於一個備用資料庫)來指明。不管關閉何時資料庫,動態註冊的資料庫都會動態地從 監聽器登出,而與之相關的資訊將從狀態列表中消失。這樣,不管資料庫是在執行還是已經關閉,監聽器總是知道它的狀態。該資訊將被用於連線請求的回退和負載平衡。
看到上面的UNKNOWN沒? 表示靜態註冊的設定,這時監聽器用來表明它不知道關於該例項的任何資訊,只有當客戶發出連線請求時,它才檢查該例項是否存在。
動態註冊的資料庫透過狀態資訊中的狀態READY或狀態BLOCKED(對於一個備用資料庫)來指明。不管關閉何時資料庫,動態註冊的資料庫都會動態地從 監聽器登出,而與之相關的資訊將從狀態列表中消失。這樣,不管資料庫是在執行還是已經關閉,監聽器總是知道它的狀態。該資訊將被用於連線請求的回退和負載平衡。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/27135177/viewspace-765105/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- oracle listener工具知識Oracle
- 為oracle listener set passwordOracle
- [Oracle] Oracle RAC中local_listener指定Oracle
- Oracle listener log配置與管理Oracle
- Oracle OCP(43):listener.oraOracle
- oracle-listener 4GOracle
- Oracle listener log 日誌分析方法Oracle
- oracle 11gr2 SCAN LISTENER配置Oracle
- Oracle(listener.sqlnet.tnsnames)設定OracleSQL
- No need to set a listener password in ORACLE 10GOracle 10g
- [Shell] monitor oracle database listener & instance statusOracleDatabase
- oracle instance and listener自動啟動Oracle
- ORACLE listener監聽設定密碼Oracle密碼
- [Oracle] Oracle11g listener.log清除步驟Oracle
- ORACLE之手動註冊監聽listener。alter system set local_listener="XXX"Oracle
- oracle-rac--srvctl add scan_listenerOracle
- 設定 Oracle 監聽器密碼(LISTENER)Oracle密碼
- Oracle Listener設定密碼示例說明Oracle密碼
- Oracle 11g中新增兩個listenerOracle
- oracle listener 靜態和動態註冊Oracle
- oracle動態和靜態監聽listenerOracle
- 再說Oracle Listener動靜態註冊Oracle
- 7.monitor oracle database listener & instance statusOracleDatabase
- 關於local_listener、remote_listener、current_listenerREM
- remote_listener和listener passwordREM
- [Oracle] Oracle 11g 關閉listener產生xml log方法OracleXML
- Listener
- Oracle清理trace、alert、aud、listener.log檔案Oracle
- oracle清理trace、alert、aud、listener等日誌檔案Oracle
- oracle 11g 【listener.ora tnsnames.ora】Oracle
- rac scan listener log 清理監聽日誌 oracleOracle
- How To modify listener port in oracle 11g GridOracle
- Windows環境配置Oracle 11gR2 ListenerWindowsOracle
- Oracle資料庫修改LISTENER的監聽埠Oracle資料庫
- remote_listener和local_listenerREM
- local_listener ,remote_listener 的配置REM
- TNS Listener Hang, New Child Listener Process Forked
- Oracle Database Server 'TNS Listener'遠端資料投毒漏洞OracleDatabaseServer