我看过一些帖子,说Oracle 11g客户端(用于Windows)在9.2版本的数据库上工作得很好。但是,如果客户端有时连接到11g数据库,有时连接到10g数据库,它还能正常工作吗?我的问题是:当连接到10g和11g数据库时,有什么不同的配置吗?
有些人跟我说过政府咨询委员会的政策。
谢谢!
发布于 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安装的子文件夹中搜索它们):
此外,您的Windows目录中还需要以下.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,以便忽略发布者策略,并始终加载您的版本:
<configuration>
...
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="Oracle.DataAccess" publicKeyToken="89B483F429C47342" />
<publisherPolicy apply="no" />
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>发布于 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。此版本不支持代码优先。
显然,您希望在连接到每个进程的同时测试相同的进程,并通过您自己的测试进行验证,但我认为您不会有问题的。
https://stackoverflow.com/questions/9364570
复制相似问题