排錯記錄:plsql無法連接oracle ora-12154 ora-12560


對oracle各種各樣的錯誤還真是不熟悉,記錄一次困擾很久問題的最終排查記錄。

一、症狀描述:

plsql無法連接數據庫,提示:“ORA-12154:TNS:無法解析指定的連接標識符”

 

二、排查過程

  1. tnsnames.ora 填寫沒有錯誤
  2. 監聽服務已經啟動:管理工具--服務,OracleOraDb10g_home1TNSListener服務。
  3. 服務器orcl實例已經啟動:管理工具---服務,OracleServiceORCL
  4. 服務器能ping通:網絡連接良好
  5. 實例能tnsping通:能夠ping通,則說明客戶端能解析listener的機器名,而且lister也已經啟動,但是並不能說明數據庫已經打開,而且tsnping的過程與真正客戶端連接的過程也不一致。
  6. oracle客戶端oracle net Manager測試通過,表明確實能連接
  7. 環境變量path值設置已經修改好。
  8. sqlplus提示 ORA-12154:sqlplus 用戶名/密碼@192.168.164.132:1521/orcl。
  9. plsql-preference-oracle home人工設置正確。

 

已經過程經過N次重復始終無法連接,始終報錯“ORA-12154"。

 

三、解決方案

經過以上反復修改,終於有一天用sqlplus遠程連接時報了個新錯誤:

"ORA-12560: TNS: 協議適配器錯誤"

總算有個眉目了,服務器端在環境變量中設置orcle_sid=orcl。

   網上百度解決方法如下

在運行中輸入regedit,進入注冊表,然后到HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\HOME0將該環境變量ORACLE_SID設置為****,****database SID。

或者右擊我的電腦,屬性--高級系統設置--環境變量---系統變量--新建變量名=oracle_sid,變量值=****,****database SID。或者進入sqlplus前,在command line下輸set oracle_sid=********database SID。

但我進入注冊表后發現,我的ORACLE_SID=orcl,沒有問題。

繼續嘗試下面的設置環境變量的方式,新建變量:ORACLE_SID=orcl,問題解決。

 

有待探討

那么問題來了:

這台服務器中注冊表中設置了ORACLE_SID也不能保證完全可以連接,最好設置ORACLE_SID;而跟他完全同樣配置的另一台服務器(這兩台其實是虛擬機,復制過來的,完全一樣),並未在環境變量中設置ORACLE_SID卻能連接。這是為什么?

 

參考

ORA-12560: TNS: 協議適配器錯誤

ORA-12154: TNS: 無法解析指定的連接標識符

“ORA-12154: TNS: 無法解析指定的連

SQL plus連接遠程Oralce數據庫


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM