天天看點

Oracle監聽的靜态注冊和動态注冊

靜态注冊:通過解析listene.ora檔案

動态注冊:由PMON程序動态注冊至監聽中

在沒有listener.ora配置檔案的情況下,如果啟動監聽,則監聽為動态注冊。用圖形化netca建立的監聽,預設也為動态注冊

1.靜态注冊

listener.ora檔案,監聽的配置檔案,靜态注冊讀取該檔案,動态注冊,不必要

可以通過netca工具建立,也可以手動編輯。典型的listener.ora檔案内容:

LISTENER_PHAMR = 

  (DESCRIPTION = 

    (ADDRESS = (PROTOCOL = TCP)(HOST = phamrdb1-vip)(PORT = 1521)) 

  )

SID_LIST_LISTENER_PHALR = 

  (SID_LIST = 

    (SID_DESC = 

      (GLOBAL_DBNAME = phalr) 

      (ORACLE_HOME = /oracle/product/11.2.0) 

      (SID_NAME = phalr) 

    ) 

listener.ora檔案兩大子產品:

LISTENER子產品:監聽名字、連接配接協定、監聽主機、監聽端口等基本配置資訊

SID_LIST_LISTENER子產品:配置監聽的靜态注冊特性,包含資料庫服務名、ORACLE_HOME、執行個體名等資訊。

注意:SID_NAME,就是資料庫執行個體名,在Linux環境大小寫敏感

GLOBAL_DBNAME就是資料庫服務名,可以省略,預設和SID_NAME保持一緻,也可以不一緻。

ORACLE_HOME,預設和$ORACLE_HOME環境變量保持一緻。Windows,該參數無效,取自系統資料庫。

靜态注冊,監聽不知道執行個體的具體狀态,是以監聽啟動之初檢視執行個體資訊,其狀态資訊顯示為UNKNOWN.例如:

oracle@phamrdb1: /home/oracle> lsnrctl status LISTENER_PHAMR

LSNRCTL for Linux: Version 11.2.0.4.0 - Production on 17-NOV-2016 17:17:37

Copyright (c) 1991, 2013, Oracle.  All rights reserved.

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=phamrdb1-vip)(PORT=1521))) 

STATUS of the LISTENER 

------------------------ 

Alias                     LISTENER_PHAMR 

Version                   TNSLSNR for Linux: Version 11.2.0.4.0 - Production 

Start Date                01-OCT-2016 14:12:51 

Uptime                    47 days 3 hr. 4 min. 45 sec 

Trace Level               off 

Security                  ON: Local OS Authentication 

SNMP                      OFF 

Listener Parameter File   /oracle/product/11.2.0/network/admin/listener.ora 

Listener Log File         /oracle/diag/tnslsnr/phamrdb1/listener_phamr/alert/log.xml 

Listening Endpoints Summary... 

  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=10.178.1.64)(PORT=1521))) 

Services Summary... 

Service "phamr" has 1 instance(s).     監聽狀态中的服務名 

  Instance "phamr", status UNKNOWN, has 1 handler(s) for this service...  監聽狀态中的執行個體名 

The command completed successfully

2,動态注冊 

在動态注冊監聽的環境中,listener.ora檔案可以不包括目前資料庫的執行個體資訊,是以這個檔案不必要。

執行個體啟動時,會由Oracle PMON程序将資料庫執行個體資訊動态注冊至監聽上。

當Oracle執行個體關閉時,會再次由PMON程序自動從監聽裡面撤銷目前執行個體資訊。

是以,要實作動态注冊,資料庫的執行個體至少要處于nomount狀态

監聽動态注冊時的執行個體狀态:來自PMON程序動态注冊時的執行個體狀态,一般有3種狀态:READY、BLOCKED和RESTRICED

READY:表示資料庫執行個體已經處于mount或者open狀态,可以接受用戶端連接配接

BLOCKED:表示資料庫執行個體還處于nomount狀态或者該執行個體類型為ASM執行個體,不接受用戶端連接配接,如果這時候用戶端去連

               接資料庫會報ora-12528錯誤

RESTRICED:表示資料庫處于RESTRICED模式,不接受普通權限的遠端用戶端連接配接,如果這時候用戶端去連接配接資料庫會報

                  ora-12526錯誤

oracle@fsdata: /oracle/product/11.2.0/network/admin> lsnrctl status

LSNRCTL for Linux: Version 11.2.0.4.0 - Production on 17-NOV-2016 16:01:43

Connecting to (ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521)) 

Alias                     LISTENER 

Start Date                17-NOV-2016 15:57:23 

Uptime                    0 days 0 hr. 4 min. 19 sec 

Listener Log File         /oracle/diag/tnslsnr/fsdata/listener/alert/log.xml 

  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=fsdata)(PORT=1521))) 

Service "FSDATA" has 1 instance(s). 

  Instance "FSDATA", status READY, has 1 handler(s) for this service... 

Service "FSDATAXDB" has 1 instance(s). 

  Instance "FSDATA", status READY, has 1 handler(s) for this service... 

The command completed successfully 

LSNRCTL for Linux: Version 11.2.0.4.0 - Production on 17-NOV-2016 15:58:47

Uptime                    0 days 0 hr. 1 min. 23 sec 

  Instance "FSDATA", status BLOCKED, has 1 handler(s) for this service... 

執行個體既可以動态注冊,同時靜态注冊,狀态分别顯示為READY和UNKNOWN

LSNRCTL for Linux: Version 11.2.0.4.0 - Production on 17-NOV-2016 17:50:14

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=fsdata)(PORT=1521))) 

Uptime                    0 days 1 hr. 52 min. 50 sec 

Service "FSDATA" has 2 instance(s). 

  Instance "FSDATA", status UNKNOWN, has 1 handler(s) for this service... 

3.監聽的常用指令

lsnrctl start [listener_name]

lsnrctl stop [listener_name]

lsnrctl status [listener_name]

lsnrctl service [listener_name]

lsnrctl reload [listener_name]

4.監聽的别名

監聽預設名字是LISTENER,可以配置别名

oracle@fsdata: /dump> ps -ef | grep tnslsnr | grep  -v grep 

oracle   29598     1  0 15:57 ?        00:00:00 /oracle/product/11.2.0/bin/tnslsnr LISTENER -inherit 

oracle@phamrdb1: /home/oracle> ps -ef | grep tnslsnr| grep -v grep 

oracle   38300     1  0 Oct01 ?        06:21:54 /oracle/product/11.2.0/bin/tnslsnr LISTENER_PHAMR –inherit

文章可以轉載,必須以連結形式标明出處。

本文轉自 張沖andy 部落格園部落格,原文連結:  http://www.cnblogs.com/andy6/p/7453395.html ,如需轉載請自行聯系原作者