oracle11g - 连接到 10g 和 11g 数据库的 Oracle 11g 客户端

标签 oracle11g oracle10g compatibility oracleclient

我看到一些帖子说 Oracle 11g 客户端(适用于 Windows)适用于高达 9.2 的数据库。但是,如果客户端有时连接到 11g 有时连接到 10g 数据库,它还能工作吗?我的问题是:连接到 10g 和 11g 数据库时是否有什么不同的配置?

有些人告诉我 GAC 的政策。

谢谢 !

最佳答案

使用较新的客户端驱动程序连接到较旧的 Oracle 数据库通常没有问题,例如使用 12g 客户端连接到 10g 或 11g 数据库。其余的答案属于技术问题,在执行程序的计算机上(可能)已经安装了 Oracle 客户端的情况下,这些问题可能出现在 .Net 程序中。

2014 年更新:

与此同时,Oracle 已经为 Oracle 数据库发布了一个托管的 .Net 驱动程序。因此,与其安装本地 Oracle 客户端或随应用程序一起提供 Instant Client,不如只提供托管驱动程序,而不依赖于本地配置。这样您就可以轻松安装客户端、GAC、Oracle 数据库版本等。您可以从 the Oracle website 下载托管驱动程序。 .

以前的答案,如果您不能使用托管驱动程序,仍然需要:

如果您不知道您的客户端工作站上是否安装了 Oracle 客户端,问题就会开始。如果您在谈论 GAC 我假设,您不知道是否安装了 Oracle 客户端,如果安装了,它是哪个版本 .

如果您不想依赖已安装的 Oracle Client,您可以随 .Net 应用程序一起提供 Oracle Instant Client。例如您可以下载ODAC 11.2 Release 4 (11.2.0.3.0) with Oracle Developer Tools for Visual Studio ,它为您的开发人员工作站提供 Oracle 客户端安装(Visual Studio 支持 DataSet 开发和 EntityFramework)以及即时客户端所需的所有文件。

对于即时客户端,您需要以下文件(在 ODAC 安装的子文件夹中搜索它们):

  • oci.dll
  • ociw32.dll
  • Oracle.DataAccess.dll
  • orannzsbb11.dll
  • oraociicus11.dll(如果你用的是英文,否则对应的.dll)
  • OraOpd11w.dll
  • tnsnames.ora(如果需要)

  • 此外,您的 Windows 目录中需要以下 .dll 文件:
  • mfc71.dll
  • msvcr71.dll

  • 只需复制应用程序工作目录中的所有文件(.exe 文件所在的位置)。

    现在它如何属于 GAC?

    如果客户端计算机上安装了 Oracle 客户端,则 GAC 中也会有一个 Oracle.DataAccess.dll。也有可能安装了一个策略,该策略声明如下:独立于您的程序所引用的 Oracle.DataAccess.dll,应始终使用您的 GAC 中的 Oracle.DataAccess.dll 版本。如果您安装我上面链接的 ODAC,您会在下面找到该文件

    C:\Windows\Microsoft.NET\assembly\GAC_32\Policy.4.112.Oracle.DataAccess\v4.0_4.112.3.0__89b483f429c47342



    结果是,如果客户端计算机有另一个版本的安装的 Oracle Client 11 比您在应用程序中引用的那一个安装的多。

    为了解决这个问题,您可以配置您的 app.conf 以便忽略发布者策略并始终加载您的版本:
    <configuration>
    ...
      <runtime>
        <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
          <dependentAssembly>
            <assemblyIdentity name="Oracle.DataAccess" publicKeyToken="89B483F429C47342" />
            <publisherPolicy apply="no" />
          </dependentAssembly>
        </assemblyBinding>
      </runtime>
    </configuration>
    

    关于oracle11g - 连接到 10g 和 11g 数据库的 Oracle 11g 客户端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9364570/

    相关文章:

    html - 从 PL/SQL 生成 HTML

    oracle11g - 将列修改为NULL-Oracle

    oracle - 无法编译此小型oracle 10g数据库功能

    ios - 有没有办法在我的代码中找到不能在以前版本的 iOS 上运行的方法?

    unicode - 不区分大小写的存储和 Unicode 兼容性

    sql - 甲骨文11g : shuffling VARCHAR2 column to get random mapping

    java - 将 NewProxyConnection 转换为 C3P0ProxyConnection 时出现 ClassCastException

    c# - 如何将unicode数据保存到oracle?

    mysql - 使用sql减去列中的两个值

    firefox - 是否可以有选择地关闭 Firefox/Chrome 中的 CSS 或 Javascript 功能进行测试?