【问题标题】:Install Oracle ODBC 32 bit driver in a Windows 64 bit server with Oracle 11g 64 bit install [duplicate]在带有 Oracle 11g 64 位安装的 Windows 64 位服务器中安装 Oracle ODBC 32 位驱动程序 [重复]
【发布时间】:2021-11-05 02:46:20
【问题描述】:

我花了半天时间试图通过 ODBC 将我的旧 VB6 应用程序(VB6 仅 32 位,因此仅支持 32 位 ODBC 驱动程序)连接到 Oracle 数据库。 如果您有 VB.NET 中的应用程序,这是一个不同的问题,您有更多选择,正如@Wernfried 的回复所表明的那样。

问题是 Windows 64 位服务器在生产中安装了 Oracle 11g 64 位,因此只有 ODBC 64 位可用。我不想在那个安装上造成问题,所以我的想法是只添加必要的,以允许 ODBC 32 位 Oracle 驱动程序在系统中可用。

我想分享我的解决方案,也许可以在未来帮助其他人(或我自己)。

【问题讨论】:

标签: oracle odbc 64-bit driver 32-bit


【解决方案1】:

注意此解决方案仅适用于特定情况,即您只需要 ODBC 32 位在 64 位系统上工作的情况。其他依赖 32 位 DLL 的应用程序可能无法运行,因为找不到它。

这个想法是手动将 instaclient 32 位添加到服务器,因此不会干扰主系统。我们需要基本的 instaclient + ODBC instaclient

按照以下步骤操作:

  • https://www.oracle.com/database/technologies/instant-client/downloads.html 下载 32 位 instaclient 和 32 位 ODBC(instantclient-basic-win32-11.1.0.7.0.zipinstantclient-odbc-win32-11.1.0.7.0.zip
  • 只需解压到文件夹即可安装,例如C:\instaclient_11_2
  • instaclient ODBC 也必须在该文件夹中解压缩,然后您需要执行odbc_install.exe。之后,系统中就可以使用 Oracle ODBC 32 位了。
  • 说明说将文件夹C:\instaclient_11_2 添加到系统路径,但这并不是仅仅为了使ODBC 工作所必需的。事实上,为了让系统尽可能不受影响,请不要这样做。
  • 添加,以便 Oracle ODBC 32 位驱动程序识别您的 tnsnames.ora 文件、环境变量 TNS_ADMIN 与值 C:\instaclient_11_2 并将原始 tnsnames.ora 复制到该文件夹​​中您的 Oracle 主页 network\admin 文件夹。

此时,您拥有可用的 32 位 ODBC 驱动程序并配置了 Oracle tnsnames.ora。

  • 转到 C:\Windows\SysWOW64 文件夹并在其中运行 odbcad32.exe 为您的应用程序创建 Oracle 的本机 32 位 ODBC 驱动程序并测试连接。就是这样。

注意:如果在这一步创建ODBC驱动时,会出现这个错误: “由于系统错误代码 14001,无法加载 Instantclient_11_2 ODBC 驱动程序中 Oracle 的安装例程:应用程序无法启动,因为它的并排配置不正确。请查看应用程序事件日志或使用命令行 sxstrace.exe 工具了解更多详细信息。(..\SQORAS32.DLL)。"

那么 VC++ 2005 可再发行组件丢失了。前往https://www.microsoft.com/en-US/download/details.aspx?id=14431,下载32位版本并安装。那么它应该可以工作了。

不需要重新启动系统,当前的 Oracle 安装不会受到影响。一切都应该像以前一样正常工作,但 Oracle ODBC 32 位可用并且可以正常工作。

【讨论】:

  • 不会工作。这些文件夹按照它们出现在PATH 环境变量中的顺序进行评估。如果您将C:\instaclient_11_2 放在末尾,则应用程序将访问 64 位版本(并失败)。如果您将C:\instaclient_11_2 放在开头,其他 64 位应用程序将停止工作。请参阅我上面评论中的正确说明。
  • 不会工作......但它目前正在工作。也许 ODBC 不需要 32 位 DLL(尽管说明是这样说的),但实际情况是系统工作正常,而且我的 ODBC 32 位驱动程序也在工作。顺便说一下,PATH中的顺序是64位版本,然后是32位
  • 我怀疑 64 位和 32 位应用程序能否在这台机器上同时运行。也许 ODBC 是一个例外,因为驱动程序 DLL 位置是在注册表中指定的,而不是依赖于 PATH - 您可以使用 Oracle Connection Tester 进行测试
  • 请尝试升级到更新版本的 Oracle 客户端!
  • 你所说的,@WernfriedDomscheit,符合所有逻辑。其他依赖 32 位 DLL 的应用程序可能无法运行。但我的具体需求是只有 ODBC 32 位才能工作,而且这种方法没有进一步的复杂性,正在工作。所以,我认为这可能是一个有效的解决方案,这是因为我编写了本指南(与我在这里找到的其他更复杂的指南不同)。
猜你喜欢
  • 2013-08-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-10-30
  • 1970-01-01
  • 1970-01-01
  • 2014-10-02
相关资源
最近更新 更多