1. 程式人生 > >ora--12154 :TNS :could not resolve the connect identifier specified 錯誤處理

ora--12154 :TNS :could not resolve the connect identifier specified 錯誤處理

今天碰到一個情況,有一臺機器用PLSQL連線資料庫怎麼也連不上,一直報這個錯:ora--12154 :TNS :could not resolve the connect identifier specified

檢視情況:資料庫沒有問題,其他同事可以連線,本機Net Manager 配置連線時也正常,測試也通過;只有PLSQL登入時連不上,同時程式連線也不行。注:本機器剛重灌系統,新搭的環境。

後來上網搜了一圈,根據現象,大概判斷是客戶端的問題,於是讓同事自己瞧瞧是不是客戶端安裝有問題,他自己也覺得好象有點不對,安裝目錄下沒有多少東西,於是建議重灌客戶端,第二次重灌後還是不行,因解除安裝不徹底。這次清理乾淨了,再重灌了一次,告知一次都OK了。

下面將搜到的一些好資料都總結起來:

1.先檢查伺服器端的監聽服務是否開啟,如果沒有開啟請啟動其監聽

客戶端:tnsping <tns_name>
     
伺服器Linux:

#>lsnrctl status 檢視監聽狀態

#>lsnrctl start 啟動監聽

2.通過Sql Plus連線一下試試,如果Sql Plus連線能成功,那就說明你的tnsnames.ora內容有錯誤

我的問題就在別名dev_db前面有一個空格,這個可以通過文字編輯器(Edit Plus,UE)來檢視是否有空格,只要有空格那就肯定是不行的,而且如果那段內容是出現在檔案的中間的話,將導致該檔案裡所有相應的連線別名都不成功,如果是在最後面就只有其自身連線別名不能成功,其他連線別名還是能連線成功。(注:我的

tnsnames.ora配置了多個數據庫例項的連線,所有才有多個連線別名。)

如:

空格dev_db =
 
(DESCRIPTION =
   
(ADDRESS_LIST =
     
(ADDRESS = (PROTOCOL = TCP)(HOST = 172.168.10.5)(PORT = 1521))
   
)
   
(CONNECT_DATA =
     
(SID = ora10)
   
)
 
)

3.如果確保你的tnsnames.ora內容沒有錯誤,那請將%ORACLE_HOME%\product\10.2.0\db_1\NETWORK\ADMIN目錄下的所有檔案刪了,然後重新連線,一般就能解決了。

說明一下:那個目錄裡的檔案是在你建立連線的時候動態生成的,不要怕刪了會有問題

4.進入PLSQL Developer的主介面,在登入介面選擇取消即不登入進入主介面,然後選擇選單Tools(工具)-Preferences(首選項),在設定視窗中,選擇Oracle-Connection(連線),對應設定視窗中,找到Oracle Home(Oracle主目錄),選擇你本地所安裝客戶端的版本,儲存設定,然後重新啟動PLSQL Developer,這時就可以正常登入了

裝瞭解決Oracle Developer Tools之後,出現“ORA-12154: TNS: 無法解析指定的連線識別符號報錯的解決方法如下:

    1.檢查登錄檔,HKey_LocalMachine\Software\Oracle下面的Oracle_Home,若不對,修改成正確的;

    2.解除安裝ODP for .Net (或者解除安裝ODT for .Net, ODT中包含ODP, ODT VS.Net的一個整合外掛,用於連線和瀏覽oracle資料庫,並且提供對oracle資料庫的拖拽操作,類似VS.Net對於SQL Server的資源管理器)

    3.如果ODT for .Net的目錄依然存在,刪除或者重新命名此目錄;

然後重起系統,重新連線ASP.Net程式,如果還有同樣的錯誤,看著辦吧,我建議重灌Oracle吧。

分析原因:系統原來裝的是ORACLE 10G 10.1.0,解除安裝後還沒重啟就裝上10.2.0,結果先是監聽器起不來,竟然還是指向10.1.0的位置,監聽器當然不能啟動了。

處理過程:
    1
、查詢登錄檔,將監聽器指向新的位置,重啟服務,OK
    2
PL/SQL DEVELOPER還是連線不了,其它方式都正常。將原先安裝在其它邏輯盤的ODP for .Net 解除安裝重灌到與ORACLE 10.2.0同一位置。重啟系統,DEVELOPER還是報錯,不過些時報錯提示資訊為空。
    3
、因為DEVELOPER設定有更改後,進入選單TOOLSPREFERENCES...設定,在ORACLE下的CONNECTION中,將ORACLE HOMEOCI LIBIARY設為空即自動檢測。連線正常,問題解決。

二、應用程式中報錯:

一個很難想到的引起ORA-12154的原因使用OracleClient.OracleConnection(我連的是Oracle 11g,其他版本未知),如果你的執行目錄太長或者有括號等(未考察有些什麼符號),那麼即使你的服務名是對的,也會引起ORA-12154問題“TNS: 無法處理服務名,當出現這個問題時,請也考慮這個原因