在遠端客戶端連接RAC數據庫時,通過統一的服務名連接時經常會出現ORA-12545錯誤。
SQL> CONN NDMAIN@nuagerac輸入口令: ******已連接。
SQL> CONN NDMAIN@nuagerac輸入口令: ******
ERROR:ORA-12545: 因目標主機或對象不存在, 連接失敗警告: 您不再連接到 ORACLE。
SQL> CONN NDMAIN@nuagerac輸入口令: ******已連接。
SQL> CONN NDMAIN@nuagerac輸入口令: ******已連接。
SQL> CONN NDMAIN@nuagerac輸入口令: ******
ERROR:ORA-12545: 因目標主機或對象不存在, 連接失敗警告: 您不再連接到 ORACLE。
本地數據庫TNSNAMES的配置:
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 Connection Redirected To Wrong Host/IP ORA-12545中進行了相應的描述。並給出瞭解決方法:
修改數據庫中的初始化參數LOCAL_LISTENER:
SQL> CONN SYS@nuage1 AS SYSDBA輸入口令: ****已連接。
SQL> ALTER SYSTEM SET LOCAL_LISTENER = '(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.127)(PORT = 1521))' SID = 'nuage1';系統已更改。
SQL> CONN SYS@nuage2 AS SYSDBA輸入口令: ****已連接。
SQL> ALTER SYSTEM SET LOCAL_LISTENER = '(ADDRESS = (PROTOCOL =TCP)(HOST = 192.168.1.128)(PORT = 1521))' SID = 'nuage2';系統已更改。
設置之後,再次嘗試連接數據庫:
SQL> CONN NDMAIN@nuagerac輸入口令: ******已連接。
SQL> CONN NDMAIN@nuagerac輸入口令: ******已連接。
SQL> CONN NDMAIN@nuagerac輸入口令: ******已連接。
SQL> CONN NDMAIN@nuagerac輸入口令: ******已連接。
SQL> CONN NDMAIN@nuagerac輸入口令: ******已連接。
SQL> CONN NDMAIN@nuagerac輸入口令: ******已連接。
SQL> CONN NDMAIN@nuagerac輸入口令: ******已連接。
SQL> CONN NDMAIN@nuagerac輸入口令: ******已連接。
修改之後,到目前爲止再也沒有出現ORA-12545的錯誤信息
不過Oracle沒有認爲這個是bug,只是認爲是PROBLEM。