64bit oracle and oracle client.

本文解决在.NET环境下访问Oracle数据库时遇到的错误,并探讨在使用PLSQL时遇到的问题,提出通过安装OracleClientx64解决访问问题的方法,以及在修改注册表后PLSQL仍然出现初始化错误的原因和解决策略。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 
如果安装了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、付费专栏及课程。

余额充值