The provider is not compatible with the version of Oracle client sometimes (提供程序与此版本的 Oracle 客户机不兼容)

其实这个问题很直观,就是你在C#项目中使用的Oracal.DataAcess.dll文件的版本与你电脑上安装的ODAC.EXE(ODP.NET)版本不一致,不论是32位或者是64位平台不一致,还是版本的高低不一致,反正就是不匹配造成了问题。具体的解决办法网上有很多,这里就不再细讲。

但是这次我遇到的问题很奇怪。我的机器上都装了多个ODAC.EXE的版本,包括两个64位的,一个32位的,而且明明我在C#中使用的Oracle.DataAccess.dll的版本跟某个ODAC是完全一致的,但是还是抛出了The provider is not compatible with theversion of Oracle client sometimes这个异常,这让我很费解。而且更奇怪的是,这个异常并不是每次都抛出来,时而有时而没有,也就是说,我的代码数据库的连接,一会能连上一会不能连上,全部靠运气。

找了很久,终于找到了问题的根源。因为这是一个遗留的项目,我下载到了本地,看到了这个项目中有圈起来的那几个文件,虽然觉得奇怪,我也没有在意太多。但是正是这几个文件,才造成了上述的问题。当我把这几个文件移除之后重新编译了一下,就一切正常了,能正常连接到数据库。所以,这次总结的道理就是,在有关OracleC#项目中,不要随便引入oci这些文件。(知道此刻我都不知道为什么前人做这个项目的时候会引入这几个文件。)


相关文章

数据库版本:11.2.0.4 RAC(1)问题现象从EM里面可以看到,在23号早上8:45~8:55时,数据库等待会话暴增...
(一)问题背景最近在对一个大约200万行数据的表查看执行计划时,发现存在异常,理论上应该返回100多万...
(一)删除备份--DELETE命令用于删除RMAN备份记录及相应的物理文件。当使用RMAN执行备份操作时,会在RM...
(1)DRA介绍 数据恢复顾问(Data Recovery Advise)是一个诊断和修复数据库的工具,DRA能够修复数据文...
RMAN(Recovery Manager)是Oracle恢复管理器的简称,是集数据库备份(backup)、修复(restore)和恢复...
(1)备份对象 可以使用RMAN进行的备份对象如下: --整个数据库:备份所有的数据文件和控制文件; --数...