使用 Oracle 11g 64 位安装在 Windows 64 位服务器中安装 Oracle ODBC 32 位驱动程序

Install Oracle ODBC 32 bit driver in a Windows 64 bit server with Oracle 11g 64 bit install

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

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

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

注意此解决方案仅适用于特定情况,即您只需要 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并将 Oracle 主目录 network\admin 文件夹中的原始 tnsnames.ora 复制到该文件夹​​中。

此时,您已拥有可用的 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 位可用并且可以正常工作。