有個網站程序,在64位機子上可以連接mssql,連不了oracle。把程序放在32位的機子上,mssql和oracle都可以連接。那么問題來了。
詳細描述:
啟動程序,查詢的時候,程序報錯ORA-06413連接未打。
遇到這樣的提示,都無語了。講了等於什么都沒講。
解決過程: 省略,很操蛋的我沒能解決。最后請求大神指導。ps.網絡上說的什么’)’的原因這邊無效。
錯誤原因
先檢查下,連接Oracle是不是使用的dll是System.Data.OraceClient,如果是,那么問題就在這兒了。(如果不是,對不起,這篇文章幫不了你。)因為System.Data.OraceClient是非托管的,最終調用的是oracle客戶端的oci.dll來連接數據庫的。而oci.dll有分32位和64位。
最好的解決方法是把System.Data.OraceClient改為odp(用nuget安裝),因為odp是托管的,不需要調用oci.dll來連接Oracle。
但是如果沒法改的話(比如我,用別人的框架, 沒法改),那么參考下面的兩個解決方案。
解決方案一
代碼運行,默認用的是IIS Express,這貨沒法設置。改為IIS本地來運行開發。
- vs右擊啟動項,屬性,web,然后如圖

- 在IIS中創建網站程序,自己定義端口號,然后吧啟動地址寫入到上圖的那個輸入框。
- 在IIS中,進入應用進程池,右擊新建的那個應用進程池,選中高級屬性,設置如圖

這樣就可以了,在vs中調試,就不會報錯了。
這個方法我試過,是可以的,但是大神也說了,這方法畢竟不是很好的。最好的就是替換成odp。
解決方案二
這個方法我試過,沒什么效果,但還是寫出來。因為可能是因為oci.dll版本的問題,所以下載這個文件:http://pan.baidu.com/s/1i39ruDJ
解壓后,把oci的路徑放在環境變量中。這個是oracle的客戶端。 ps.我馬馬虎虎的試過了,沒用,你看着辦。
2015-1-22補充: 方法二需要重啟,重啟之后就能用了。