首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> DB2 資料庫 >> DB2 教學

Oracle 監聽器靜態註冊配置深度解析與驗證

     編輯:DB2 教學

Oracle 監聽器靜態註冊配置深度解析與驗證

監聽器靜態註冊允許在 listener.ora 中預先定義服務,無需實例啟動即可被監聽器感知,常用於 Data Guard、GoldenGate 等場景。本文通過配置示例、狀態驗證及客戶端測試,徹底講透靜態註冊機制。

1. listener.ora 靜態註冊配置示例

SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (GLOBAL_DBNAME = ora11gbak)   -- 自定義服務名,供客戶端連接使用
      (ORACLE_HOME = /u01/app/ora11/product/11.2.0/dbhome_1)
      (SID_NAME = ora11g)
    )
    (SID_DESC =
      (GLOBAL_DBNAME = lixorabak)   -- 另一自定義服務名
      (ORACLE_HOME = /oracle)
      (SID_NAME = lixora)
    )
  )

關鍵點:GLOBAL_DBNAME 可自定義,不必與數據庫 db_name 或 service_names 一致;SID_NAME 必須與實例 instance_name 一致;ORACLE_HOME 指向實例安裝路徑。

2. 狀態驗證:lsnrctl status 輸出解讀

LSNRCTL> status
Services Summary...
Service "PLSExtProc" has 1 instance(s).
  Instance "PLSExtProc", status UNKNOWN, has 1 handler(s)...

Service "lixora" has 1 instance(s).
  Instance "lixora", status READY, has 1 handler(s)...  -- 動態註冊

Service "lixorabak" has 1 instance(s).
  Instance "lixora", status UNKNOWN, has 1 handler(s)... -- 靜態註冊

Service "ora11g" has 1 instance(s).
  Instance "ora11g", status READY, has 1 handler(s)...  -- 動態註冊

Service "ora11gbak" has 1 instance(s).
  Instance "ora11g", status UNKNOWN, has 1 handler(s)... -- 靜態註冊
  • READY:實例已向監聽器動態註冊(PMON 進程主動註冊)。
  • UNKNOWN:靜態註冊服務,監聽器不主動探測實例狀態,僅在連接請求到達時嘗試啟動專用服務器進程。

3. 數據庫參數對照

NAME                TYPE    VALUE
-----------------------------------------------------------
db_name             string  ora11g
db_unique_name      string  ora11g
global_names        boolean FALSE
instance_name       string  ora11g
service_names       string  ora11g

動態註冊服務名默認取自 service_names;靜態註冊服務名由 GLOBAL_DBNAME 指定。

4. 客戶端連接測試

C:\> sqlplus system/oracle@10.80.18.241/ora11gbak
Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0

SQL> select * from dual;
DUMMY
-----
X

使用靜態註冊的服務名 ora11gbak 成功連接,驗證配置生效。

5. 靜態 vs 動態註冊核心差異

維度動態註冊靜態註冊
觸發方式實例啟動後 PMON 自動註冊監聽器讀取 listener.ora 靜態加載
狀態顯示READYUNKNOWN
實例未啟動時服務不可見服務可見,連接時由監聽器啟動專用進程
典型場景常規業務連接Data Guard、GoldenGate、RMAN 備份、實例未啟動需連接

6. 最佳實踐建議

  1. GLOBAL_DBNAME 建議命名規範:_<用途>,如 ora11g_dg、ora11g_gg。
  2. 生產環境同時保留動態註冊(業務連接)與靜態註冊(運維工具),互不干擾。
  3. 修改 listener.ora 後需 lsnrctl reload 或重啟監聽器生效。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved