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

Oracle 靜態註冊與動態註冊完整比較與設定指南

     編輯:Oracle 資料庫基礎

什麼是註冊?

資料庫啟動時將自身作為服務註冊至監聽器。客戶端只需知道服務名即可連線,無須知悉資料庫名或實例名。服務名可與實例名同或不同。

靜態註冊

實例啟動時讀取 listener.ora 設定,將實例與服務註冊至監聽器。GLOBAL_DBNAME 對外提供服務名,SID_NAME 提供實例名。

listener.ora 範例

SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC = (SID_NAME = PLSExtProc) (ORACLE_HOME = ...) (PROGRAM = extproc))
    (SID_DESC = (GLOBAL_DBNAME = orcl) (ORACLE_HOME = ...) (SID_NAME = orcl))
    (SID_DESC = (GLOBAL_DBNAME = orcl1) (ORACLE_HOME = ...) (SID_NAME = orcl))
  )

單實例 orcl,對外提供 orcl、orcl1 兩個服務。

動態註冊

PMON 進程依 init.ora 的 instance_name、service_names 參數動態註冊至監聽器。

  • 實例名取自 instance_name,未設定則取 db_name
  • 服務名取自 service_names,未設定則組合 db_name.db_domain
  • 可在 service_names 以逗號指定多服務,適合共享伺服器架構

動態註冊 listener.ora 範例

SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC = (SID_NAME = PLSExtProc) (ORACLE_HOME = ...) (PROGRAM = extproc))
  )

僅保留外部程序註冊,資料庫服務由 PMON 動態註冊。

重要參數與注意事項

  • 動態註冊預設僅註冊至預設監聽器(LISTENER、1521、TCP),非預設監聽器需設定 local_listener
  • 未顯式設定參數時,僅資料庫在監聽器啟動後啟動才會註冊;監聽器重啟會導致註冊資訊遺失
  • 強烈建議顯式設定 service_names、instance_name,監聽器重啟時 PMON 可快速完成再註冊

查詢註冊類型

lsnrctl status
  • 狀態 UNKNOWN = 靜態註冊(監聽器不知實例狀態,連線請求時才檢查)
  • 狀態 READY / BLOCKED = 動態註冊(監聽器即時掌握實例狀態,支援連線回退與負載平衡)
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved