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

Windows Oracle 10g RAC 解決 ORA-12545 連線失敗:VIP 配置與 Listener 參數調優

     編輯:Oracle 資料庫基礎

問題現象

Windows 2003 + Oracle 10g RAC (10.2.0.2),客戶端間歇性連線失敗:

ERROR: ORA-12545: 因目標主機或對象不存在,連接失敗

同一 TNS 連線字串,重複執行時成功與失敗交替出現。

環境拓撲

角色IP主機名
Node 1 Public201.150.14.5node1
Node 2 Public201.150.14.7node2
Node 1 VIP201.150.14.18node1-vip
Node 2 VIP201.150.14.20node2-vip

客戶端 TNS 配置 (正確)

GZMDC =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 201.150.14.18)(PORT = 5880))
      (ADDRESS = (PROTOCOL = TCP)(HOST = 201.150.14.20)(PORT = 5880))
    )
    (CONNECT_DATA = (SERVER = DEDICATED)(SERVICE_NAME = test))
  )

根因分析

RAC 環境下,Listener 向遠端註冊時使用 REMOTE_LISTENER 參數指定的 TNS 名稱 (LISTENERS_TEST) 解析的 IP。若伺服器端 tnsnames.ora 中 LISTENERS_TEST 解析為 **主機名 (node1-vip)** 而非 **VIP IP**,Windows DNS 解析不穩定導致 Listener 註冊失敗,進而引發客戶端連線間歇性失敗。

解決方案:修正伺服器端 TNS 解析為 VIP IP

步驟 1:確認 REMOTE_LISTENER 參數

SQL> SHOW PARAMETER LISTENER
NAME                 TYPE   VALUE
local_listener       string 
remote_listener      string LISTENERS_TEST

步驟 2:修改兩個節點伺服器端 $ORACLE_HOME/network/admin/tnsnames.ora

# 修改前 (使用主機名)
LISTENERS_TEST =
  (ADDRESS_LIST =
    (ADDRESS = (PROTOCOL = TCP)(HOST = node1-vip)(PORT = 5880))
    (ADDRESS = (PROTOCOL = TCP)(HOST = node2-vip)(PORT = 5880))
  )

# 修改後 (強制使用 VIP IP)
LISTENERS_TEST =
  (ADDRESS_LIST =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 201.150.14.18)(PORT = 5880))
    (ADDRESS = (PROTOCOL = TCP)(HOST = 201.150.14.20)(PORT = 5880))
  )

步驟 3:重新載入 Listener 註冊

-- 方法一:強制 PMON 重新註冊
ALTER SYSTEM REGISTER;

-- 方法二:重啟 Listener (需 OS 層面)
lsnrctl stop LISTENER
lsnrctl start LISTENER

驗證修正效果

-- 檢查 Listener 服務註冊狀態
lsnrctl services LISTENER
-- 應顯示兩個節點 VIP IP 正確註冊

-- 客戶端連線測試 (連續 10 次)
FOR /L %I IN (1,1,10) DO sqlplus system/pwd@GZMDC

替代方案對比

方案優點缺點推薦度
修正伺服器端 tnsnames.ora (本文方案)根治、無客戶端變更、維護成本低需兩節點同步修改★★★★★
客戶端 hosts 檔加入 VIP 映射快速驗證上百台客戶端維護困難★★☆☆☆
DNS 確保 VIP 主機名解析正確集中管理依賴網路團隊、排查週期長★★★☆☆

RAC 連線最佳實踐補充

  • SCAN IP (11g+):單一客戶端入口,自動負載均衡,取代多 VIP 列表
  • LOCAL_LISTENER:建議顯式設定為本節點 VIP,避免預設主機名解析問題
  • FAILOVER 配置:TNS 加入 (FAILOVER=ON)(LOAD_BALANCE=ON)
  • 監控腳本:定期檢查 lsnrctl services 註冊狀態,異常告警
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved