單機修改 listener.ora 重啟即可,但在 10g RAC 中,PMON 動態註冊機制與 LOCAL_LISTENER 參數綁定,若不同步修改將導致服務無法註冊。本文記錄真實遷移 1521→1533 的完整排查過程與標準化操作流程。
listener.ora PORT 1521 → 1533lsnrctl stop/start,netstat -an | grep 1533 確認監聽lsnrctl services 顯示無 Service 註冊,等待 2 分鐘、重啟執行個體均無效根因:PMON 依據 LOCAL_LISTENER 參數 (預設 LISTENER_) 尋找 Listener,若 TNS 名稱解析仍指向 1521,PMON 將嘗試向舊埠註冊失敗。
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 後服務可見,但非長久之計——靜態註冊無負載均衡、故障轉移感知能力。
LOCAL_LISTENER 指向的 TNS 條目
LOCAL_LISTENER_CRM01 =
(ADDRESS = (PROTOCOL = TCP)(HOST = node1-vip)(PORT = 1533))
ALTER SYSTEM SET LOCAL_LISTENER = 'LOCAL_LISTENER_CRM01' SCOPE = BOTH SID = 'crm1';
-- 另一節點同理設定 crm2
lsnrctl stop/start,驗證 lsnrctl services 顯示 READY 狀態lsnrctl status LISTENER_CRM01 顯示 Listening on PORT 1533lsnrctl services LISTENER_CRM01 顯示 crm1/crm2 服務狀態 READYSQL> SHOW PARAMETER LOCAL_LISTENER 確認參數生效crs_stat -t 確認資源在線| 參數/檔案 | 角色 | 修改時機 |
|---|---|---|
| listener.ora PORT | Listener 實際監聽埠 | 維護窗口 |
| tnsnames.ora LOCAL_LISTENER 條目 | PMON 解析的目標位址 | 同步修改 |
| SPFILE LOCAL_LISTENER 參數 | 執行個體綁定的 TNS 名稱 | SCOPE=BOTH 即時生效 |
| REMOTE_LISTENER | 跨節點負載均衡/故障轉移 | 通常指向 SCAN Listener,同步修改 |
RAC 環境任何網路層變更 (IP、VIP、PORT、SCAN) 必須視為**整體拓撲變更**,同步修改:Listener 設定 → TNS 解析 → 執行個體參數 → 用戶端連線字串 → 應用中介軟體資料源。建立標準化變更清單與回滾方案,避免「單點修改、全局故障」。