背景:进行程序部署,客户机上原有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

Oracle.DataAccess.Client.OracleException: 提供程序与此版本的 Oracle 客户机不兼容的更多相关文章

  1. System.TypeInitializationException: The type initializer for 'Oracle.DataAccess.Client.OracleConnection' threw an exception. ---> Oracle.DataAccess.Client.OracleException: 提供程序与此版本的 Oracle 客户机不兼容”

    .net应用程序通过Oracle.DataAccess.dll访问64位的Oracle服务器,在连接时出现以下异常:“System.TypeInitializationException: The t ...

  2. DB字段顺序与类的属性顺序一致:{Oracle.DataAccess.Client.OracleException ORA-00932: 数据类型不一致: 应为 TIMESTAMP, 但却获得 NUMBER

    {Oracle.DataAccess.Client.OracleException ORA-00932: 数据类型不一致: 应为 TIMESTAMP, 但却获得 NUMBER     应用程序中类型T ...

  3. EF:Oracle.DataAccess.Client.OracleException: ORA-12154: TNS:could not resolve the connect identifier specified

    报告错误:Oracle.DataAccess.Client.OracleException: ORA-12154: TNS:could not resolve the connect identifi ...

  4. 向Oracle中插入记录时,出现“Oracle.DataAccess.Client.OracleException ORA-00933 ”错误

    错误信息的弹出框

  5. .NET 错误 47 存储区提供程序工厂类型“Oracle.DataAccess.Client.OracleClientFactory”未实现 IServiceProvider 接口。请使用实现该接口的存储区提供程序。

    问题描述: 最近用VS2010连接ORACLE数据库的时候突然报错“错误 47 存储区提供程序工厂类型“Oracle.DataAccess.Client.OracleClientFactory”未实现 ...

  6. C#连接Oracle数据库的方法(Oracle.DataAccess.Client也叫ODP.net)

    官方下载地址(ODP.net)(中文):http://www.oracle.com/technetwork/cn/topics/dotnet/downloads/index.html 官方下载地址(O ...

  7. C#连接Oracle数据库的方法(System.Data.OracleClient、Oracle.DataAccess.Client也叫ODP.net、Oracle.ManagedDataAccess.dll)

    官方下载地址(ODP.net)(中文):http://www.oracle.com/technetwork/cn/topics/dotnet/downloads/index.html 官方下载地址(O ...

  8. [转]Oracle 调用存储过程并显示结果集 Oracle.DataAccess.Client OracleDbType.RefCursor

    本文转自:http://liye9801.blog.163.com/blog/static/6019703200901244448950/ 今天学习了一个Oracle中的存储过程,一开始便被如果返回结 ...

  9. Oracle.DataAccess.Client.OracleCommand”的类型初始值设定项引发异常。

    Oracle.DataAccess.Client.OracleCommand”的类型初始值设定项引发异常. 64位系统下,部署32位odp.net,出现问题.解决方法:卸载32位xcopy odt.n ...

  10. 解决Oracle.DataAccess.Client.OracleConnection”的类型初始值设定项引发异常。

    解决Oracle.DataAccess.Client.OracleConnection”的类型初始值设定项引发异常. 这个问题他们说是oracle的版本问题 但是好像不是...(我感觉VS版本问题,我 ...

随机推荐

  1. CSS – Selector

    前言 这篇记入一些我常用到. 以前写的笔记 css 选择器 (学习笔记) Whatever (*) * {} By Id (#) #id {} By Class (.) .class-name {} ...

  2. PTA甲级—图

    1.图的遍历 1013 Battle Over Cities (25 分) 一种方法使用dfs求连通块的个数 #include <cstdio> #include <cstring& ...

  3. SQL limit字句

    limit用法介绍 limit子句可以返回检索查询行的某一连续的部分 用法介绍: SELECT column_list FROM table1 ORDER BY column_list LIMIT r ...

  4. 下载 Youtube 上的视频的方法

    事件起因: 某项目组同事需要下载 Youtube 上的视频作为参考视频 解决办法: https://www.converto.io/ -= 实测有效 =-  我个人一直在用该网站可以下载,非常好用,下 ...

  5. 深入理解 Nuxt.js 中的 app:data:refresh 钩子

    title: 深入理解 Nuxt.js 中的 app:data:refresh 钩子 date: 2024/9/29 updated: 2024/9/29 author: cmdragon excer ...

  6. c++面经系列0:开篇-c++岗位面试都会问些什么?

    本文是C++岗位面试经验分享系列的开篇,敬请持续关注. 在C++岗位面试中,通常首先进行技术面试,若通过则会进行HR面试.HR面试的内容先暂且略过,未来我们会有机会深入探讨,今天我们主要聚焦于技术面试 ...

  7. USB协议基础篇

    初次接触USB的同学,可能会被里面各种名词给搞晕,下面就来梳理一下这些知识,希望能帮助大家理解USB. 一,从最常见的名词说起 1.1 什么是USB 这个我就不多解释了,直译就是通用串行总线.再不明白 ...

  8. perf时 出现[kernel.kallsyms] 符号怎么办

    在 perf 工具生成的火焰图中看到 [kernel.kallsyms],通常意味着火焰图中包含内核符号,但这些符号没有被正确解析.这可能是由于以下几个原因导致的: 内核符号表不可用或不完整:perf ...

  9. 使用threejs创建一个长方体

    // 创建设备 正方体 // x1 X轴坐标 y1 Y轴坐标 item 设备的信息 可以把 item 嵌入到正方体里面 h : 高度 private initQuare1(x1:any,y1:any, ...

  10. js中数据的基本类型

    有5种基本数据类型分类 : 1. 数字型  number 2. 字符型 string 3. 布尔型 boolean 4. undefined 未定义  就是声明了但是没有赋值 5. null 空指针 ...