使用不同版本的 ODAC 连接 Oracle

Using different version of ODAC to connect to Oracle

目前我正在开展一个项目,我们最近刚刚在我们的测试服务器以及我的本地开发设置上将我们的 Oracle 版本从 11g 升级到 12c。

在本地设置升级后,我升级了我的 ODAC(主要用于 Oracle.DataAccess.dll)以使用 12c 32 位版本。在我终于能够重新连接到我的数据库之前,我经历了一些反复试验,以及卸载和重新安装 ODAC。

我们正在考虑更新测试服务器的 ODAC。我昨天安装了,和本地一样,我无法连接数据库。

我已经把tnsnames.ora文件放到了合适的地方,这个文件只是原件的一个副本。我已经使用了一个测试程序来确定我是否可以打开一个连接,我可以使用新的 Oracle.DataAccess.dll。但是,当我尝试将其导入到主站点时,我们无法连接。即使在我删除原始引用后,也会出现这种情况,添加新的指向 Oracle.DataAccess.dll.

的位置

我的一位同事提到,无论我们拥有什么版本的 ODAC(11g 或 12c)都没有关系,11g 版本应该能够与 12c 数据库连接仍然没有问题。我对此表示怀疑,因为他过去曾就其他问题发表过此类声明,而且他同意我们最初需要升级 ODAC。

这是真的吗?如果没有,除了卸载并重新安装之外,我是否可以采取任何步骤来解决问题?不应该这么费劲,哈哈。

更新: 我已经确认我的同事是正确的,在 12c Oracle DB 上使用 11g ODAC 确实有效。但是,大声笑,他在我可以和他进一步讨论之前就卸载了它,所以是的...

即使在删除 11g 的 ODAC 后,我仍然发现类似的问题。我的同事还清理了包含一些 11g 引用的注册表条目,但我们仍然遇到问题。

更新(2017 年 8 月 8 日): 问题总算弄清楚了。我安装的 12c ODAC 与我在服务器 (VS 2012) 上使用的 Visual Studio 版本不兼容。在查看了 ODAC 的要求后,我发现了这一点,并对此了如指掌。我们卸载了 12c ODAC 并重新安装了 11g ODAC。现在一切正常。

我已经要求升级VS,以便将来我们有一个兼容的版本可以使用。是的,虽然这不太可能发生,哈哈...

问题的答案是 VS 2012 和 12c ODAC 之间的兼容性。在重新阅读 12c ODAC 的规范后,我发现我们服务器上的 Visual Studio 版本未被涵盖。我们有 VS 2012,ODAC 不会返回(至少对于我们的 ODAC 发行版),因此出现了问题。

找到这个之后,我们回到了 11g ODAC,它仍然可以与 12c DB 一起使用。