首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >连接到10g和11g数据库的Oracle 11g客户端

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

Stack Overflow用户
提问于 2012-02-21 00:26:20
回答 2查看 17.1K关注 0票数 6

我看过一些帖子,说Oracle 11g客户端(用于Windows)在9.2版本的数据库上工作得很好。但是,如果客户端有时连接到11g数据库,有时连接到10g数据库,它还能正常工作吗?我的问题是:当连接到10g和11g数据库时,有什么不同的配置吗?

有些人跟我说过政府咨询委员会的政策。

谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-02-21 02:47:25

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

2014年更新:

与此同时,甲骨文已经发布了一个用于甲骨文数据库的托管.Net驱动程序。因此,与安装本地Oracle客户端或随应用程序一起提供即时客户端不同,首选的方法应该是只提供托管驱动程序,而不依赖于本地配置。然后,安装的客户端、GAC、Oracle数据库版本等都没有问题。您可以从the Oracle website下载托管驱动程序。

上一个答案,如果您不能使用托管驱动程序,仍然需要:

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

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

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

  • oci.dll
  • ociw32.dll
  • Oracle.DataAccess.dll
  • orannzsbb11.dll
  • oraociicus11.dll (如果您使用的是英语,则返回相应的.dll)
  • OraOpd11w.dll
  • tnsnames.ora (如果需要)

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

  • mfc71.dll
  • msvcr71.dll

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

现在如何属于广交会?

如果在客户机上安装了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.DataAccess.dll client 11版本不是您在应用程序中引用的版本,则当您尝试加载Oracle时,Oracle应用程序始终会抛出异常(并显示错误消息,如“提供程序不兼容...”)。

要解决此问题,您可以配置您的app.conf,以便忽略发布者策略,并始终加载您的版本:

代码语言:javascript
复制
<configuration>
...
  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="Oracle.DataAccess" publicKeyToken="89B483F429C47342" />
        <publisherPolicy apply="no" />
      </dependentAssembly>
    </assemblyBinding>
  </runtime>
</configuration>
票数 8
EN

Stack Overflow用户

发布于 2012-02-21 00:44:03

我在使用JAVA或.Net时没有遇到任何问题。事实上,Oracle说这是非常好的:

Oracle此版本包含

数据库客户端11.2.0.3,它可以访问Oracle数据库9.2及更高版本。甲骨文在Microsoft Visual Studio2010和.NET Framework4中支持实体框架和LINQ,包括实体框架4.1和4.2。此版本不支持代码优先。

显然,您希望在连接到每个进程的同时测试相同的进程,并通过您自己的测试进行验证,但我认为您不会有问题的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9364570

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档