【问题标题】:ODP.NET: The provider is not compatible with the version of Oracle clientODP.NET:提供程序与 Oracle 客户端版本不兼容
【发布时间】:2013-05-31 00:23:45
【问题描述】:

首先,我想说我阅读了其他问题,但没有一个对我有帮助。

我收到此错误的服务器是 Windows 2003 SP2 + .net framework 4.0 + Oracle i9 客户端

我已经下载了最新的ODP.NET ODAC1120320Xcopy_32bit.zip,把这些dll复制出来了。

  • oci.dll
  • ociw32.dll
  • Oracle.DataAccess.dll
  • orannzsbb11.dll
  • oraocci11.dll
  • oraociei11.dll
  • OraOps11w.dll

我创建了一个只连接到预言机的小应用程序。 link

当我运行这个应用程序时,我得到了 The provider is not compatible with the version of Oracle client 错误。

在下载页面上还写了:下面的每个 32 位 ODAC 客户端下载都支持连接到 Oracle 数据库版本 9.2、10.1、10.2、11.1 和 11.2。

所以我想我的 9i 数据库应该没问题。

我不确定是否应该使用一些较旧的 ODP.NET 版本。 SO 上的一个答案建议使用支持 .NET 2.0 的版本 11.1.0.6.20,但我的应用程序是针对 .NET 4.0 编写的。

我能做什么?

【问题讨论】:

  • 我自己最近也遇到了这个问题。该问题是由仍在目标系统上的不兼容/较旧的 Oracle DLL 引起的。为了纠正这个问题,我必须卸载 Oracle,搜索并删除任何杂散的 DLL,然后使用最新的安装包(您在上面描述的那个)重新安装 Oracle。不过,可能有一种更简单的方法来处理这种冲突,所以我只是将其作为评论而不是答案发布。
  • 使用 XCopy 下载时,最好只使用提供的安装脚本,而不是尝试自行滚动并可能错过步骤。

标签: c# oracle odp.net


【解决方案1】:

我不知道在没有某种安装的情况下运行 oracle 客户端的任何受支持方法(xcopy 版本包含一个用于安装的批处理文件,因此“xcopy”有点用词不当。

也就是说,如果您打算做一些不受支持的事情,那么您不妨选择最终会得到支持的事情 - 100% 托管的提供程序(意味着无需复制额外的非托管 dll)目前处于测试阶段: http://www.oracle.com/technetwork/database/windows/downloads/odpmbeta-1696432.html

即使只是为了学习经验,我也很乐意看到一些东西到最后,所以如果你想看到你目前的成果,我会理解的。 oracle documentation 确实表明应用程序目录实际上是非托管 dll 搜索顺序中的第一个。我的猜测是需要额外的 dll(您使用的版本比链接的文章新)。我会使用Process Monitor 之类的工具查看它从您的应用目录外部加载了哪些特定的 dll,并查看您是否可以从新的 ODAC 中找到等价的文件进行复制。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-10-14
    • 1970-01-01
    • 2013-06-29
    • 1970-01-01
    • 1970-01-01
    • 2013-08-07
    • 2010-11-18
    相关资源
    最近更新 更多