如何在64位win7下通过ODAC来访问Oracle服务器
????? 最近公司跟我換了新電腦:2代i3+8G內(nèi)存,由于32位的win7最多只能用3.25G內(nèi)存,而用ramdisk4g劃出4.75G來作硬盤又覺太浪費(fèi),遂想用64位的系統(tǒng).
????? 從網(wǎng)上下載了冷風(fēng)的64位win7后先裝系統(tǒng)再裝驅(qū)動再裝常軟件,除部份驅(qū)動需重新安裝外,一路安好.但是在安裝ODAC組件時,出了如下問題:
????? 1.常用的plsql與sqldbx只有32位版本,只能使用32位的ODAC,
? ? ? 2.在64位系統(tǒng)上,如果使用32位的ODAC,asp.net程序時會報異常:嘗試加載Oracle客戶端庫時引發(fā)BadImageFomatException。如果在安裝32位Oracle客戶端組件的情況下以64位模式運(yùn)行,將出現(xiàn)此問題。
? ? ? 3.32位的ODAC安裝時無法向注冊表寫入必要信息,分布式服務(wù)Oracle Services for MTS無法安裝.
? ? ? 后來在網(wǎng)上瘋狂搜索,發(fā)現(xiàn)出了這個問題的人還不少,其實(shí),Oracle的客戶端版本與服務(wù)端版本沒有必然限制,32/64位的客戶端訪問32/64位的服務(wù)器沒有任何問題,32位的客戶/服務(wù)端裝在32位的操作系統(tǒng)上,32/64位的客戶/服務(wù)端裝在64位的操作系統(tǒng)上也沒有任何問題,主要是這些客戶端與其它程序的兼容性問題.看來64位的系統(tǒng)想普及,還需時日啊.
????? 當(dāng)然,解決的方法也是有的,主要思路就是不管32/64位的ODAC都一并裝上去,然后plsql與sqldbx通過32位的ODAC來訪問數(shù)據(jù)庫,asp.net程序通過64位的ODAC來訪問數(shù)據(jù)庫/使用分布式事務(wù).
????? 首先,安裝64位的ODAC(install.bat oramts).由于操作系統(tǒng)也是64位的,這樣就只需按照常規(guī)方式,在環(huán)境變量(Path)里加上其目錄與其bin目錄的路徑,然后去注冊表里修改語言設(shè)置(NLS_LANG),再加上監(jiān)聽文件路徑(TNS_ADMIN),asp.net程序就可以通過64位的ODAC來訪問數(shù)據(jù)庫/使用分布式事務(wù)了.
? ? ? 然后,安裝32位的ODAC(install.bat basic).由于操作系統(tǒng)是64位的,無法操作注冊表,這樣安裝后無法在注冊表里寫入必要數(shù)據(jù),使用時也無法從中讀取必要設(shè)置.這樣相關(guān)的設(shè)置就只能通過環(huán)境變量來讀取.還是在環(huán)境變量(Path)里加上其目錄與其bin目錄的路徑,然后在環(huán)境變量里加上語言設(shè)置(NLS_LANG)與監(jiān)聽文件路徑(TNS_ADMIN),然后在plsql與sqldbx的程序設(shè)置里,將oci文件路徑強(qiáng)制指定為32位的ODAC路徑,這樣程序就可以正常使用了.
? ? ? 這里有幾點(diǎn)需要說明:
? ? ? 1.如上所述,在Path里既有32位ODAC的路徑又有64位ODAC的路徑,這樣相關(guān)程序會不會讀取錯誤呢?結(jié)論是不會,32位的plsql與sqldbx會跳過64位的oci去調(diào)用32位的oci,而64位的asp.net程序則會跳過32位的oci去調(diào)用64位的oci.這樣大家互不沖突
? ? ? 2.32位的程序與64位的程序可以共同指向同一個監(jiān)聽目錄,使用同一個監(jiān)聽文件.
? ? ? 3.環(huán)境變量的更改與生效之間有時間差,可以不到1秒,也可能幾分鐘,所以最可靠的方式是重啟.
?
? ? ? 補(bǔ):現(xiàn)在我發(fā)現(xiàn)了一種更簡單的方式:對于64位系統(tǒng)上的64位的IIS,如果是IIS6,則通過命令行注冊,將iis的64位模式改為32位模式,如果是IIS7,則通過應(yīng)用程序池的高級設(shè)置,將"啟用32位應(yīng)用程序"設(shè)置為True,即可只用單獨(dú)安裝32位的ODAC.不過對于需要使用Oracle分布式事務(wù)的,則還是需要安裝64位的ODAC,因?yàn)?2位的ODAC中的分布式事務(wù)無法在64位系統(tǒng)中安裝.
?
????? 參考的文章:
轉(zhuǎn)載于:https://www.cnblogs.com/ljzforever/archive/2011/10/20/2219400.html
總結(jié)
以上是生活随笔為你收集整理的如何在64位win7下通过ODAC来访问Oracle服务器的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 语音复核
- 下一篇: PHP文件包含漏洞原理分析和利用方法