listener的靜態註冊與動態註冊詳述

zhanglei_itput發表於2009-03-30

listener註冊型別
                1. 靜態註冊
                    8i及8i以前,均採用靜態註冊。
                    把註冊的資訊提前寫到listener.ora裡面。
                    oem和其他服務是必須的。
                2. 動態註冊
                    Oracle9i 或Oracle8i 例程使用動態服務註冊
                    不需要配置listener.ora檔案
                    動態註冊由PMON程式執行 在初始化引數中必須配置SERVICE_NAMES、INSTANCE_NAME這兩個引數,才可以進行動態註冊
                    預設情況下,PMON 向TCP/IP 的預設本地地址— 埠1521— 處的伺服器上的本地監聽程式進行註冊
                    非預設監聽程式註冊(e.g.prot=1522),定義LOCAL_LISTENER 初始化引數(可以透過tnsnames.ora 等命名方法將非預設listener_alias解析,也可以直接把address字串新增到LOCAL_LISTENER中)
alter system set local_listener='(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.230.68)(PORT = 1522))'

下面是分別對預設的動態註冊、靜態註冊、非預設listener的靜態註冊和非預設listener的動態註冊做的試驗:
 1.  預設listener動態註冊(預設本地地址— 埠1521-SERVICE_NAMES、INSTANCE_NAME)
      dbca庫以後,D:\oracle\network\admin是沒有listener.ora, tnsnames.ora這兩個檔案的
  D:\oracle\network\admin\sqlnet.ora內容:
  # This file is actually generated by netca. But if customers choose to
  # install "Software Only", this file wont exist and without the native
  # authentication, they will not be able to connect to the database on NT.
  SQLNET.AUTHENTICATION_SERVICES = (NTS)
C:\Documents and Settings\zhanglei>lsnrctl service                                                                                                   
LSNRCTL for 32-bit Windows: Version 9.2.0.1.0 - Production on 30-3月 -2009 15:05:49                                                                            
Copyright (c) 1991, 2002, Oracle Corporation.  All rights reserved.            
正在連線到 (ADDRESS=(PROTOCOL=tcp)(PORT=1521))                                 
服務摘要..                                                                     
服務 "leiz" 包含 1 個例程。                                                    
  例程 "leiz", 狀態 READY
, 包含此服務的 1 個處理程式...                        
    處理程式:                                                                  
      "DEDICATED" 已建立:17 已拒絕:0 狀態:ready                                
         LOCAL SERVER                                                          
服務 "leizXDB" 包含 1 個例程。                                                 
  例程 "leiz", 狀態 READY, 包含此服務的 1 個處理程式...                        
    處理程式:                                                                  
      "D000" 已建立:0 已被拒絕:0 當前: 0 最大: 1002 狀態: ready                
         DISPATCHER                                  
         (ADDRESS=(PROTOCOL=tcp)(HOST=leiz)(PORT=1750))                        
命令執行成功                  
結論:9i資料庫建立完以後,預設使用的是動態註冊(READY代表動態註冊, UNKONW代表靜態註冊)

 2.  預設listener靜態註冊
      netca新增 預設LISTENER,檔案listener.ora檔案內容如下:
   SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (SID_NAME = PLSExtProc)
      (ORACLE_HOME = d:\oracle)
      (PROGRAM = extproc)
    )
    (SID_DESC =
      (SID_NAME = leiz) /*新增instance_name */
      (ORACLE_HOME = d:\oracle)
      --(PROGRAM = extproc)/*備註:這行一定要去掉,否則conn測試會失敗*/
    )
  )
重啟listener,檢視監聽服務狀態
C:\Documents and Settings\zhanglei>lsnrctl service
LSNRCTL for 32-bit Windows: Version 9.2.0.1.0 - Production on 30-3月 -2009 15:30:03
Copyright (c) 1991, 2002, Oracle Corporation.  All rights reserved.
正在連線到 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=172.16.15.99)(PORT=1521)))
服務摘要..
服務 "PLSExtProc" 包含 1 個例程。
  例程 "PLSExtProc", 狀態 UNKNOWN, 包含此服務的 1 個處理程式...
    處理程式:
      "DEDICATED" 已建立:0 已被拒絕:0
         LOCAL SERVER
服務 "leiz" 包含 2 個例程。
  例程 "leiz", 狀態 UNKNOWN, 包含此服務的 1 個處理程式...
    處理程式:
      "DEDICATED" 已建立:0 已被拒絕:0
         LOCAL SERVER
  例程 "leiz", 狀態 READY, 包含此服務的 1 個處理程式...
    處理程式:
      "DEDICATED" 已建立:0 已拒絕:0 狀態:ready
         LOCAL SERVER
服務 "leizXDB" 包含 1 個例程。
  例程 "leiz", 狀態 READY, 包含此服務的 1 個處理程式...
    處理程式:
      "D000" 已建立:0 已被拒絕:0 當前: 0 最大: 1002 狀態: ready
         DISPATCHER
         (ADDRESS=(PROTOCOL=tcp)(HOST=leiz)(PORT=1750))
命令執行成功      
結論:此時,靜態LISTENER UNKNOWN也被註冊進去了。READY代表動態註冊, UNKONW代表靜態註冊

 3.  非預設listener3 靜態註冊
      netca新增 非預設監聽LISTENER3,檔案listener.ora檔案內容如下:
LISTENER3 =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS_LIST =
        (ADDRESS = (PROTOCOL = TCP)(HOST = 172.16.15.99)(PORT = 1522))
      )
    )
  )
  SID_LIST_LISTENER3 =
  (SID_LIST =
    (SID_DESC =
      (SID_NAME = PLSExtProc)
      (ORACLE_HOME = d:\oracle)
      (PROGRAM = extproc)
    )
    (SID_DESC =
      (SID_NAME = leiz)
      (ORACLE_HOME = d:\oracle)
       --(PROGRAM = extproc)/*備註:這行一定要去掉,否則conn測試會失敗*/
    )
  )
C:\Documents and Settings\zhanglei>lsnrctl service listener3
LSNRCTL for 32-bit Windows: Version 9.2.0.1.0 - Production on 30-3月 -2009 16:22:27
Copyright (c) 1991, 2002, Oracle Corporation.  All rights reserved.
正在連線到 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=172.16.15.99)(PORT=1522)))
服務摘要..
服務 "PLSExtProc" 包含 1 個例程。
  例程 "PLSExtProc", 狀態 UNKNOWN, 包含此服務的 1 個處理程式...
    處理程式:
      "DEDICATED" 已建立:0 已被拒絕:0
         LOCAL SERVER
服務 "leiz" 包含 1 個例程。
  例程 "leiz", 狀態 UNKNOWN,
包含此服務的 1 個處理程式...
    處理程式:
      "DEDICATED" 已建立:42 已被拒絕:0
         LOCAL SERVER
命令執行成功
結論:非預設LISTENER3此時為靜態註冊。READY代表動態註冊, UNKONW代表靜態註冊

 4.  非預設listener3 動態註冊
       啟用非預設listener3動態註冊

SQL> alter system set local_listener='(ADDRESS = (PROTOCOL = TCP)(HOST = 172.16.15.99)(PORT = 1522))';
系統已更改。
C:\Documents and Settings\zhanglei>lsnrctl service listener3
LSNRCTL for 32-bit Windows: Version 9.2.0.1.0 - Production on 30-3月 -2009 16:28:53
Copyright (c) 1991, 2002, Oracle Corporation.  All rights reserved.
正在連線到 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=172.16.15.99)(PORT=1522)))
服務摘要..
服務 "PLSExtProc" 包含 1 個例程。
  例程 "PLSExtProc", 狀態 UNKNOWN, 包含此服務的 1 個處理程式...
    處理程式:
      "DEDICATED" 已建立:0 已被拒絕:0
         LOCAL SERVER
服務 "leiz" 包含 2 個例程。
  例程 "leiz", 狀態 UNKNOWN,
包含此服務的 1 個處理程式...
    處理程式:
      "DEDICATED" 已建立:0 已被拒絕:0
         LOCAL SERVER
  例程 "leiz", 狀態 READY, 包含此服務的 1 個處理程式...
    處理程式:
      "DEDICATED" 已建立:0 已拒絕:0 狀態:ready
         LOCAL SERVER
服務 "leizXDB" 包含 1 個例程。
  例程 "leiz", 狀態 READY, 包含此服務的 1 個處理程式...
    處理程式:
      "D000" 已建立:0 已被拒絕:0 當前: 0 最大: 1002 狀態: ready
         DISPATCHER
         (ADDRESS=(PROTOCOL=tcp)(HOST=leiz)(PORT=1139))
命令執行成功
結論:非預設LISTENER3此時既有靜態註冊,又有動態註冊。READY代表動態註冊, UNKONW代表靜態註冊

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/9252210/viewspace-580699/,如需轉載,請註明出處,否則將追究法律責任。

相關文章