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 OCP(43):listener.oraOracle
- Oracle listener log配置與管理Oracle
- oracle-listener 4GOracle
- Oracle listener log 日誌分析方法Oracle
- ORACLE之手動註冊監聽listener。alter system set local_listener="XXX"Oracle
- Oracle清理trace、alert、aud、listener.log檔案Oracle
- oracle 11g 【listener.ora tnsnames.ora】Oracle
- oracle清理trace、alert、aud、listener等日誌檔案Oracle
- Oracle Database Server 'TNS Listener'遠端資料投毒漏洞OracleDatabaseServer
- 【LISTENER】Oracle通過監聽連線緩慢分析Oracle
- oracle一個listener偵聽多個例項的配置Oracle
- Listener
- Oracle RAC環境新增新的network和listener(未完成)Oracle
- oracle監聽檔案listener.ora for 10g/11gOracle
- Listener refused the connection with the following error:ORA-12514, TNS:listenerError
- oracle ocp 19c考題7,科目082考試題-listener tnsnamesOracle
- JavaWeb-ListenerJavaWeb
- Filter&ListenerFilter
- fitter&listener
- [20211013]Oracle 19c新特性Listener自動清理(Network Log File Segmentation).txtOracleSegmentation
- 4.5.1.3 srvctl add listener
- 7、listener監聽
- 【LISTENER】Oracle分析連線監聽情況,判斷客戶端IP分佈Oracle客戶端
- listener_scan1.log、listener.log監聽日誌清理
- Presto Event Listener開發REST
- Sanic listener() 方法/函式函式
- ORA-00130: invalid listener address
- Cookie,Session Filter,Listener詳解CookieSessionFilter
- SpringBoot如何註冊Servlet、Filter、ListenerSpring BootServletFilter
- 深入理解Flutter的Listener元件Flutter元件
- 關於RAC的remote_listenerREM
- TNS問題排查 The listener supports no services
- day25-Listener監聽器
- Tomcat 記憶體馬(一)Listener型Tomcat記憶體
- JavaWeb三大元件(Servlet、Filter、Listener)JavaWeb元件ServletFilter
- Tomcat深入淺出——Filter與Listener(五)TomcatFilter
- remote_listener引發的故障分析REM
- win10怎麼沒有HomeGroup Listener怎麼辦 win10找不到HomeGroup Listener恢復方法Win10
- 一文快速回顧 Servlet、Filter、ListenerServletFilter