裝上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: 無法處理服務名”,當出現這個問題時,請也考慮這個原因。
另外,如果出現OCIEnvCreate 失敗, 傳回碼為-1,但錯誤訊息文本不可用
1、配置tnsnames.ora。配置方法網上很多。
2、完善環境變數配置。環境變數的配置網上也很多,這裡不列舉了
3、最重要的一點,註冊表加入下面索引值
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment]
"LD_LIBRARY_PATH"="F:\*\bin"
"NLS_LANG"="AMERICAN_AMERICA.ZHS16GBK"
"TNS_ADMIN"="F:\*\bin"
具體路徑根據實際情況修改。註冊表加入下面索引值後,重新偵錯工具,順利通過。
來自: http://www.cnblogs.com/dashan9zj/archive/2009/07/26/1531499.html
完成了以上幾個步驟,發現我的oracle還是串連不上。
通過一篇文章我突然意識到,是不是我的iis沒有裝全?於是重新安裝iis,根據
http://www.cnblogs.com/darwinux/archive/2009/11/15/1603489.html
中顯示的圖片完成了iis的功能擴充。懷著激動的心情,我重新開啟了vs2005並運行程式。還是不行……
最後幾乎絕望的使用管理員重新啟動vs2005,然後點擊調試。
居然通了