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

Oracle 10g RAC遠端連線ORA-12545錯誤根因與解決方案

     編輯:Oracle 資料庫基礎

現象描述

遠端客戶端透過統一服務名連線RAC叢集時,間歇性出現ORA-12545: 因目標主機或對象不存在, 連接失敗,重試幾次又正常,極不穩定。

客戶端TNS配置

nuagerac =
(DESCRIPTION =
  (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.127)(PORT = 1521))
  (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.128)(PORT = 1521))
  (LOAD_BALANCE = yes)
  (CONNECT_DATA =
    (SERVER = DEDICATED)
    (SERVICE_NAME = nuagerac)
    (FAILOVER_MODE = (TYPE = SELECT)(METHOD = BASIC)(RETRIES = 180)(DELAY = 5))
  )
)

根因分析 (Oracle Note 364855.1)

RAC環境下,Listener將連線重導向至節點VIP,但節點回報的LOCAL_LISTENER參數若為主機名而非IP,或與REMOTE_LISTENER不一致,導致客戶端解析失敗,拋出ORA-12545。

解決方案:設定各節點LOCAL_LISTENER為具體IP

-- 節點1 (nuage1)
CONN SYS@nuage1 AS SYSDBA
ALTER SYSTEM SET LOCAL_LISTENER = '(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.127)(PORT = 1521))' SID = 'nuage1';

-- 節點2 (nuage2)
CONN SYS@nuage2 AS SYSDBA
ALTER SYSTEM SET LOCAL_LISTENER = '(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.128)(PORT = 1521))' SID = 'nuage2';

驗證結果

修改後連續測試8次連線,零錯誤,問題徹底解決。

環境資訊

  • Oracle版本:10.2.0.4
  • 作業系統:Red Hat AS 4.5

補充:Oracle官方將此歸類為PROBLEM而非Bug。若環境使用SCAN Listener (11gR2+),請改設定REMOTE_LISTENER指向SCAN VIP。

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