本來有個項目是通過安裝Oracle client然后讓asp.net引用System.Data.OracleClient來訪問Oracle數據庫的,但是不知道為什么老是報:ORA-12170:連接超時的錯誤,(客戶的服務器配置是:Windows Server 2008 R2 64bit 我剛開始安裝的oracle client 是32bit ,最后報什么:require oracle version 8.1以上版本什么什么的。。。沒辦法我只好卸載這個版本,然后在Oracle官網上下載了一個Oracle Client 64bit來安裝,安裝好后就沒有這個問題了),tnsping,ping,telnet Ip 1521都是通的,但是就是連接不上,不過別人都能連接上,唯獨我的就不行,在網上搜索好多帖子,文章都不能解決問題,在客戶那里的時候,客戶的網絡組人員說:網絡都是通的,這不是網絡原因!客戶的數據庫組的的人員說:數據庫安裝是對的,這不是數據庫的原因!你tmd的這是在開玩笑嗎,我也是醉了,在群里問群友叫他們幫我解決下這個問題,都說是tns的問題,但是tns都是通過net manager配置的,什么空格 什么東西都不存在的事,所以不是tns的問題,然后有個群友開玩笑的對我說:恭喜你,你見鬼了!最后群里有個大神,他給我了一個dbvis_windows_8_0_10軟件,貌似是通過java來連接數據庫的,然后引用一下:ojdbc6.jar就可以訪問了!!!這是為何,我到現在都搞不清楚,不過我的項目是asp.net所以就算連接上了,對我也沒什么用,所以我必須想想其它辦法 來連接Oracle,然后滿世界的在網上搜索文章,看看關於用什么辦法不通過安裝Oracle Client來訪問Oracle!!!
終於被我找到了,可以通過ODBC來連接訪問Oracle,然后參考了幾篇網上的文章做好了配置,運行,確實可以了,不過在這個過程中也走了不少彎路:如下
1、不需要在本地,或者服務器上設備ODBC數據源,但是你非常通過本地這樣設置的話,那你在web.config下的連接字符串可以寫成這樣:
<add key="Oracle" value="DSN=155oracle;Uid=zhangwei;Pwd=zhangwei"/>


這樣你就可以訪問數據庫了,但是,我說但是,為什么說我不這樣設置數據源呢!你想啊,難道用戶要訪問你的數據庫都要設置本地ODBC數據源,顯然這不是正確的辦法,當然這樣也不錯,可以做為測試用,但是不能做為生產用。那么真正在生產環境中我們的連接字符串如何寫呢,如下:
<add key="Oracle" value="Driver={Microsoft ODBC for Oracle};Server=192.168.1.155/znxj;Uid=zhangwei;Pwd=zhangwei"/>
注意:上面的斜體部分,如果你部署在服務器上這個ip就不需要了。
總結:
1、在配置ODBC數據源的時候不是用戶名寫錯,就是服務器寫錯,反正自己當時也不知道哪個是對的,最后能成功也是靠我自己 的經驗慢慢改對的,網上有些文章也不全對,這點希望大家有所保留。
參考文章:
