使用PLSQL客戶端登入ORACLE時報ORA-12502和ORA-12545錯誤的解決方案

風流瀟灑雲中子發表於2018-11-02

當使用plsqldev客戶端登入oracle資料庫時,如果對應的tnsnames.ora中是直接使用IP地址來連線,並且未在系統的hosts檔案中繫結主機名時,極易出現ORA-12502及ORA-12545報錯,這兩種錯誤內容分別是:

ORA-12502: TNS:listener received no CONNECT_DATA from client

ORA-12545: Connect failed because target host or object does not exists

而且就算是偶爾正常能登入進去,登入過程也會非常緩慢,這就很有可能是資料庫的監聽引數沒配置正確,可以使用以下方式來解決。

 1、在windows的hosts檔案中顯式的繫結IP和主機名,比如我的資料庫VIP地址是192.168.1.10,資料庫伺服器主機名為racdb1,則繫結之:

 192.168.1.10   racdb1-vip

 這樣,再使用plsqldev登入時,便不會再出現上述兩種錯誤。當然,如果你嫌這樣太麻煩,想要像我一樣直接在tnsnames.ora裡指明IP來訪問,則可以採用以下第二種方案

 

2、顯式設定local_listener引數值,如下操作: 


$ sqlplus / as sysdba

SQL> show parameter listener
NAME                                 TYPE        VALUE
———————————— ———– ——————————
local_listener                       string     
remote_listener                   string      LISTENERS_RACDB
 
SQL> alter system set local_listener=`(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.10)(PORT = 1521))` sid=`racdb1`;

System altered

 
注意上面的地址是vip地址,sid是當前資料庫例項ID,在每個資料庫節點上執行上述命令,並重新啟動叢集,再嘗試登入,則會發現問題已經排除了。
 
 

相關文章