DOTNET FRAMEWORK 4.0 x64 与 Oracle

本文介绍了当使用.NET访问Oracle数据库遇到BadImageFormatException错误时的解决方案。通过安装OracleClientx64并调整Machine.config文件中的Oracle.DataAccess配置可以解决此问题。
如果安装了Oracle Client x86,使用.Net访问oracle数据库会得到错误提示
System.InvalidOperationException: 尝试加载 Oracle 客户端库时引发 BadImageFormatException。如果在安装 32 位 Oracle 客户端组件的情况下以 64 位模式运行,将出现此问题。 —> System.BadImageFormatException: 试图加载格式不正确的程序。 (异常来自 HRESULT:0x8007000B)
 
解决办法,在安装了Oracle Client x86之后再安装Oracle Client x64
.Net就可以正常访问了。。。
 
但是PLSQL又不支持Oracle Client x64
如果修改注册表到Wow6432Node后PLSQL会报如下异常
 
Initialization error
Count not load "c:\oracle\product\10.2.0\client_2\bin\oci.dll:
OracleHomeKey : SOFTWARE\ORACLE\KEY_OraClient10g_home2
OracleHomeDir: c:\oracle\product\10.2.0\client_2
found: oci.dll
Using: c:\oracle\product\10.2.0\client_2\bin\oci.dll
LoadLibrary( c:\oracle\product\10.2.0\client_2\bin\oci.dll) return 0
 
———————————-
发现如果只安装x64的oracle,也会报告如下错误
查资料得知是 Machine.config 中的设置需要改变
 
    <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="Oracle.DataAccess" publicKeyToken="89b483f429c47342" />
        <bindingRedirect oldVersion="2.0.0.0-10.9.9.9" newVersion="2.102.3.2" />
      </dependentAssembly>
    </assemblyBinding>
  </runtime>
    
修改为
    <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="Oracle.DataAccess" publicKeyToken="89b483f429c47342" processorArchitecture="amd64" />
        <bindingRedirect oldVersion="2.0.0.0-10.9.9.9" newVersion="2.102.3.2" />
      </dependentAssembly>
    </assemblyBinding>
  </runtime>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值