【问题标题】:Installing Oracle 32-bit Client on Windows Server Already Running 64-bit Oracle Database Server在已经运行 64 位 Oracle 数据库服务器的 Windows 服务器上安装 Oracle 32 位客户端
【发布时间】:2014-10-02 16:31:27
【问题描述】:

我在 Windows 2008 R2 上安装了 64 位 Oracle Database Server (11.2.0.3),自然会自动安装 64 位客户端。我必须在这台 32 位服务器上安装一个应用程序,并且需要 32 位 Oracle 客户端。 (别问 - 我无法安装此应用程序的 64 位版本,它无法与 64 位客户端一起使用,并且我无法将其安装在另一台服务器上。)

现在我尝试将 32 位客户端安装到不同的物理文件夹中,并在安装时为 Oracle Base 和软件位置选择了不同的值,它安装得很好。并将32位客户端安装的BIN文件夹放在PATH statemtn的头部。

但是,当我尝试使用 32 位版本运行“SQLplus 系统/系统”时,它给了我“ORA-12560:TNS:协议适配器错误”。当我使用 64 位 sqlplus.exe 进入文件夹并运行它(直接而不是通过 PATH)时,“系统/系统”凭据工作正常。

我将 TNSNames 文件夹从 Oracle 服务器的 NETWORK/admin 文件夹复制到 Oracle 客户端的 NETWORK/admin 文件夹,然后重新启动服务器。结果相同。

这是我对 Oracle 的故障排除知识的范围。

如何让 32 位客户端与 64 位 Oracle 服务器在同一台服务器上运行? 我知道在 linux/Unix 中,您只需将 lib32 文件夹放入 64 位客户端文件夹并设置几个环境变量,但我很确定在 Windows 中没有那么简单。

如果有办法做到这一点,请在您的回答中进行描述,因为我需要分步说明。

提前致谢。

【问题讨论】:

  • 这是给 superuser.com 的问题。
  • 如果 tnsnames.ora 在您的连接描述 CONNECT_DATA 部分使用“sid”,那么请尝试使用“service_name”代替它。

标签: database oracle client 32-bit


【解决方案1】:

这里是如何在一台机器上安装 32 位和 64 位 Oracle 客户端的说明。按照说明进行操作,它应该可以工作。

假设:Oracle Home 被称为OraClient11g_home1,客户端版本为 11gR2

  • 下载并安装 Oracle x86 客户端,例如到C:\Oracle\11.2\Client_x86

  • 下载 Oracle x64 客户端并将其安装到不同的文件夹,例如 C:\Oracle\11.2\Client_x64

  • 打开命令行工具,转到文件夹 %WINDIR%\System32,通常是 C:\Windows\System32,并创建一个符号链接 ora112 到文件夹 C:\Oracle\11.2\Client_x64(参见下面的命令部分)

  • 更改到文件夹 %WINDIR%\SysWOW64,通常是 C:\Windows\SysWOW64,并创建一个符号链接 ora112 到文件夹 C:\Oracle\11.2\Client_x86,(见下文)

  • 修改PATH 环境变量,将C:\Oracle\11.2\Client_x86C:\Oracle\11.2\Client_x64 等所有条目替换为C:\Windows\System32\ora112,分别对应它们的\bin 子文件夹。注意:C:\Windows\SysWOW64\ora112 不能在 PATH 环境中。

  • 如果需要,请将您的 ORACLE_HOME 环境变量设置为 C:\Windows\System32\ora112

  • 打开您的注册表编辑器。将注册表值 HKLM\Software\ORACLE\KEY_OraClient11g_home1\ORACLE_HOME 设置为 C:\Windows\System32\ora112。使用C:\Oracle\11.2\Client_x64 也应该可以。

  • 将注册表值HKLM\Software\Wow6432Node\ORACLE\KEY_OraClient11g_home1\ORACLE_HOME 设置为C:\Windows\System32\ora112(不是C:\Windows\SysWOW64\ora112)。使用C:\Oracle\11.2\Client_x86 也应该可以。

  • 你已经完成了!现在您可以无缝地结合使用 x86 和 x64 Oracle 客户端,即 x86 应用程序将加载 x86 库,x64 应用程序加载 x64 库而无需对您的系统进行任何进一步的修改。

  • TNS_ADMIN 环境变量(分别在注册表中的TNS_ADMIN 条目)设置到一个公共位置可能是一个聪明的主意,例如TNS_ADMIN=C:\Oracle\Common\network\admin

创建符号链接的命令:

cd C:\Windows\System32 mklink /d ora112 C:\Oracle\11.2\Client_x64 cd C:\Windows\SysWOW64 mklink /d ora112 C:\Oracle\11.2\Client_x86

注意事项:

两个符号链接必须具有相同的名称,例如ora112.

尽管名称文件夹 C:\Windows\System32 包含 x64 库,而 C:\Windows\SysWOW64 包含 x86(32 位)库。不要混淆。

【讨论】:

  • 是否有理由在不发表任何评论的情况下投反对票。万一您不喜欢链接作为分析器,我将在此处复制我的文本。
  • Wernfried,我是这个论坛的新手,所以如果我不小心对您的评论投了反对票,我很抱歉,但是,我认为我没有这样做。不过,我确实有后续行动。在我的场景中,已经安装了 Oracle 64 位服务器(和客户端)。这有什么不同吗,因为看起来您的方法假定两个客户端都没有安装。看起来您还建议在 64 位客户端之前安装 32 位客户端。就我而言,这是不可能的。只是不知道这是否会成为问题。非常感谢您的回复。我会试一试,看看会发生什么。
  • 这是一个通用指令,顺序无关紧要。安装 Oracle 客户端后,您甚至可以按任何顺序执行每一行。唯一重要的一点是:32位和64位客户端必须安装在不同的目录中。
  • 另一个注意事项:您可以将NETWORK/admin 的文件复制到两个位置,也可以定义环境变量TNS_ADMIN,例如TNS_ADMIN=c:\Settings\Oracle\admin。这将被任何 Oracle 客户端使用。
  • 效果很好!注意 - %WINDIR%\SysWOW64\System32 应该是 %WINDIR%\SysWOW64。 SysWOW64 中没有名为 System32 的文件夹。
【解决方案2】:

我有同样的问题。安装在同一台 Windows 10 机器(单独的文件夹)上的 32 位和 64 位 ORA 客户端和 32 位应用程序都停止工作。我所要做的就是编辑系统环境变量并删除 ORACLE_HOME 条目,然后重新启动。 Windows/Oracle 根据注册表项完成其余的工作。只需将 tnsnames.ora 复制到两个安装中即可。

【讨论】:

  • “编辑系统环境变量”...究竟如何??
  • @JorgeCornejoBellido 据我了解,他只是删除了ORACLE_HOME 环境变量。不过,我自己还没有尝试过。
猜你喜欢
  • 1970-01-01
  • 2021-11-05
  • 2019-10-11
  • 2013-05-08
  • 1970-01-01
  • 2010-10-12
  • 1970-01-01
  • 1970-01-01
  • 2020-11-19
相关资源
最近更新 更多