Oracle.DataAccess.Client.OracleException: 提供程序与此版本的 Oracle 客户机不兼容

背景:进行程序部署,客户机上原有oracle客户端的版本为2.113.1.0(以下简称113),而数据库、开发机和其他客户机上均采用的2.112.1.0(以下简称112)客户端,所以进行了替换。
卸载过程:其实是推荐用oracle自带的deinstall脚本进行卸载,不过由于客户机环境问题(他当时安装的简版,啥都没有),采用了手动方式。
停用了相关oracle服务;
清理注册表,主要是HKEY_LOCAL_MACHINE\SOFTWARE中的oracle项目,HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services中的服务项,HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Eventlog\Application中的日志项;删除客户端物理文件x:\app\...下的对应主目录,x:\Program Files\Oracle\... 下inventory内容;

清理系统变量中path里涉及的主目录信息。

这样,物理文件就差不多ok了,之后安装了指定版本的客户端,配了监听。

问题:程序运行时,使用的是Oracle.DataAccess.Client进行数据访问时,报错Oracle.DataAccess.Client.OracleException: 提供程序与此版本的 Oracle 客户机不兼容。
解决过程:
查看了本机的oracle主目录下...\ODP.NET\bin\2.x\中的Oracle.DataAccess.dll版本同服务器上的版本相同,确认dll无误;
确认开发机上引用的dll版本,与客户机相同,未设定指定版本,确认引用正常;
查看x:\Windows\assembly目录下的oracle相关dll,发现都有两份,一份是113的,一份是112的。删除所有113的dll,保留112版,问题解决。
推测:
开发机上的引用地址,指向的GAC中的对应dll,客户机程序启动,也是从GAC中获取,首先获得了113版,然后进行加载,导致版本不同。
关于gac,参考 http://www.cnblogs.com/chenlulouis/archive/2010/06/30/1768176.html
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值