本文作者在剛搭建好的二個節(jié)點RAC用PLSQL Developer連接經(jīng)常會出現(xiàn)ORA-12545錯誤,在METALINK上查詢了一下,是Oracle的一個小bug。下面為大家講解一下處理過程。
在遠端客戶端連接RAC數(shù)據(jù)庫時,通過統(tǒng)一的服務名連接時經(jīng)常會出現(xiàn)ORA-12545錯誤。
SQL> CONN NDMAIN@nuagerac輸入口令: ******已連接。 SQL> CONN NDMAIN@nuagerac輸入口令: ****** ERROR:ORA-12545: 因目標主機或?qū)ο蟛淮嬖? 連接失敗 警告: 您不再連接到 ORACLE。 SQL> CONN NDMAIN@nuagerac輸入口令: ******已連接。 SQL> CONN NDMAIN@nuagerac輸入口令: ******已連接。 SQL> CONN NDMAIN@nuagerac輸入口令: ****** ERROR: ORA-12545: 因目標主機或?qū)ο蟛淮嬖? 連接失敗 警告: 您不再連接到 ORACLE。 |
本地數(shù)據(jù)庫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中進行了相信的描述。
并給出了解決方法:修改數(shù)據(jù)庫中的初始化參數(shù)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';系統(tǒng)已更改。 SQL> CONN SYS@nuage2 AS SYSDBA輸入口令: ****已連接。 SQL> ALTER SYSTEM SET LOCAL_LISTENER = '(ADDRESS = (PROTOCOL =TCP) (HOST = 192.168.1.128)(PORT = 1521))' SID = 'nuage2';系統(tǒng)已更改。 |
設置之后,再次嘗試連接數(shù)據(jù)庫:
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輸入口令: ******已連接。 |
修改之后,到目前為止再也沒有出現(xiàn)ORA-12545的錯誤信息
不過Oracle沒有認為這個是bug,只是認為是PROBLEM。
這邊我特別的說明下:我用的oracle的版本是 10.2.0.4,OS:Redhat as 4.5
【編輯推薦】
- 淺談Oracle性能優(yōu)化可能出現(xiàn)的問題
- 淺談創(chuàng)建Oracle數(shù)據(jù)庫連接的兩種方法
- Oracle數(shù)據(jù)庫開發(fā)經(jīng)驗淺談