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

Oracle 10g RAC Listener 埠號變更實戰:動態註冊陷阱與 LOCAL_LISTENER 同步

     編輯:Oracle 資料庫基礎

RAC 環境 Listener 埠號遷移:從失敗到成功的關鍵細節

單機修改 listener.ora 重啟即可,但在 10g RAC 中,PMON 動態註冊機制與 LOCAL_LISTENER 參數綁定,若不同步修改將導致服務無法註冊。本文記錄真實遷移 1521→1533 的完整排查過程與標準化操作流程。

失敗嘗試:僅修改 listener.ora

  1. 兩節點 listener.ora PORT 1521 → 1533
  2. lsnrctl stop/start,netstat -an | grep 1533 確認監聽
  3. 現象:lsnrctl services 顯示無 Service 註冊,等待 2 分鐘、重啟執行個體均無效

根因:PMON 依據 LOCAL_LISTENER 參數 (預設 LISTENER_) 尋找 Listener,若 TNS 名稱解析仍指向 1521,PMON 將嘗試向舊埠註冊失敗。

暫時方案:靜態註冊 (SID_LIST)

SID_LIST_LISTENER_CRM01 =
  (SID_LIST =
    (SID_DESC =
      (SID_NAME = PLSExtProc)
      (ORACLE_HOME = /opt/oracle/product/10.2.0.4)
      (PROGRAM = extproc)
    )
    (SID_DESC =
      (GLOBAL_DBNAME = crm)
      (ORACLE_HOME = /opt/oracle/product/10.2.0.4)
      (SID_NAME = crm1)
    )
  )

重啟 Listener 後服務可見,但非長久之計——靜態註冊無負載均衡、故障轉移感知能力。

根治方案:三步同步修改

  1. 修改 listener.ora:PORT = 1533
  2. 修改 tnsnames.ora:更新 LOCAL_LISTENER 指向的 TNS 條目
    LOCAL_LISTENER_CRM01 =
      (ADDRESS = (PROTOCOL = TCP)(HOST = node1-vip)(PORT = 1533))
  3. 修改執行個體參數:
    ALTER SYSTEM SET LOCAL_LISTENER = 'LOCAL_LISTENER_CRM01' SCOPE = BOTH SID = 'crm1';
    -- 另一節點同理設定 crm2
  4. 重啟 Listener:lsnrctl stop/start,驗證 lsnrctl services 顯示 READY 狀態

驗證清單

  • ☐ lsnrctl status LISTENER_CRM01 顯示 Listening on PORT 1533
  • ☐ lsnrctl services LISTENER_CRM01 顯示 crm1/crm2 服務狀態 READY
  • ☐ SQL> SHOW PARAMETER LOCAL_LISTENER 確認參數生效
  • ☐ 應用端連線測試 (修改連線字串 PORT=1533)
  • ☐ RAC 節點間 crs_stat -t 確認資源在線

10g RAC Listener 關鍵參數對照

參數/檔案角色修改時機
listener.ora PORTListener 實際監聽埠維護窗口
tnsnames.ora LOCAL_LISTENER 條目PMON 解析的目標位址同步修改
SPFILE LOCAL_LISTENER 參數執行個體綁定的 TNS 名稱SCOPE=BOTH 即時生效
REMOTE_LISTENER跨節點負載均衡/故障轉移通常指向 SCAN Listener,同步修改

經驗總結

RAC 環境任何網路層變更 (IP、VIP、PORT、SCAN) 必須視為**整體拓撲變更**,同步修改:Listener 設定 → TNS 解析 → 執行個體參數 → 用戶端連線字串 → 應用中介軟體資料源。建立標準化變更清單與回滾方案,避免「單點修改、全局故障」。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved