oracle提示 ORA-12154: TNS: 無法解析指定的串連標識符 OCIEnvCreate 失敗, 傳回碼為-1,但錯誤訊息文本不可用

來源:互聯網
上載者:User

裝上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,然後點擊調試。

居然通了

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.