記錄一次 11.2.0.3 RAC (AIX) 環境中,crsctl stat res -t 顯示 ora.LISTENER.lsnr 狀態 ONLINE OFFLINE (節點 1 ONLINE、節點 2 OFFLINE),但 lsnrctl status 顯示監聽正常運行。根因:監聽設置密碼導致 CRS 代理 oraagent 執行 lsnrctl status 時認證失敗 (TNS-01169),進而標記資源 OFFLINE。
[check] lsnrctl status LISTENER ... (:CLSN00010:) TNS-01169: The listener has not recognized the password ... state changed from: STARTING to: OFFLINE
PASSWORDS_LISTENER (或 11g SECURE_REGISTER_LISTENER 相關參數)。oraagent 定期 (默認 60s) 執行 lsnrctl status LISTENER 健康檢查。lsnrctl 無密碼參數下連接監聽,被監聽拒絕 (TNS-01169)。oraagent 將非零退出碼解釋為檢查失敗,置資源狀態 OFFLINE。業務零影響:監聽進程實際存活、端口監聽正常、服務註冊正常、客戶端連接無阻礙。僅 CRS 監控面板顯示異常,可能干擾自動化巡檢腳本。
| 方案 | 操作 | 優缺點 |
|---|---|---|
| 1. 移除監聽密碼 (推薦) | lsnrctl set password → 輸入舊密碼 → lsnrctl change_password → 留空新密碼 → save_config | + 徹底解決 - 降低監聽管理安全性 (內網可接受) |
| 2. 修改 oraagent 檢查邏輯 (非官方) | 編輯 $GRID_HOME/bin/lsnrctl 包裝腳本自動餵密碼,或修改 oraagent 內部邏輯 (不支持、升級失效) | - 風險極高、不建議 |
| 3. 忽略告警 + 外部監控補位 | 巡檢腳本改用 lsnrctl status 直接檢查進程/端口/服務,不依賴 crsctl stat res | + 保留密碼 - 需維護額外監控 |