萬盛學電腦網

 萬盛學電腦網 >> 數據庫 >> oracle教程 >> ORA-12154:TNS:無法解析指定的連接標識符

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

前幾天,同事裝上oracle的客戶端,在ASP.Net下面怎麼連都連不到oracle數據庫(操作系統是XP,報錯找不到OIC.DLL,之前我也遇到過,重裝了一下客戶端就好了,我用的是2000 professional的系統)。後來我到Oracle官方網站上尋找解決方案,下載了Oracle Developer Tools for Visual Studio .NET 10.1.0.4.0 (ODT for VS.Net),把它裝上之後,可以在.net中浏覽oracle數據庫,估計可以浏覽oracle數據庫了,應該可以操作oracle數據庫,鼓吹通事把ODT for VS.Net裝上之後,果然他的機器上的ASP.Net程序可以正常連接oracle了,就是這個問題,昨天裝了整整一天的系統。 今天上午他的問題剛剛解決,下午我這邊就出了問題,連接oracle時報錯,信息如下"ORA-12154: TNS: 無法解析指定的連接標識符", 到google上到處搜,看到一些英文的網站的答案是修改tnsname.ora就可以修復連接。檢查了一下也沒發現這個文件的問題。

估計是安裝ODT for VS.Net之後,OracleHome和OracleSID有重復或者無效, 到注冊表中一看,果然是有問題,發現HKey_LocalMachine\Software\Oracle下面的Oracle_Home路徑被改成了E:\program files, 我的oracle是裝在E:\oracle目錄的,於是把這個改了,再試,系統也重起了,依然無效,後來想干脆把ODT 給刪了,於是到控制面板找Oracle Developer Tools, 怎麼都找不到,到是找到了ODP for .Net,把這個給卸載了,以前裝的Oracle Developer Tools目錄(E:\Oracle\product\10.1.0\Client_1)依然沒有被刪除,於是手動刪除這個目錄,提示OCI.dll正在使用,無法刪除,再嘗試把這個目錄給重命名了,居然命名成功。於是重啟系統,再運行Asp.Net的客戶端,成功連接Oracle數據庫。

總結一下,裝了解決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設置有更改後,進入菜單TOOLS》PREFERENCES...設置,在ORACLE下的CONNECTION中,將ORACLE HOME和OCI LIBIARY設為空即自動檢測。連接正常,問題解決。

二、應用程序中報錯:

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

copyright © 萬盛學電腦網 all rights reserved