如何确定已安装的 Oracle 客户端是 32 位还是 64 位?

55

操作系统:Windows 2008 Server R2

Oracle客户端:11.2

非常感谢


2
https://forums.oracle.com/forums/thread.jspa?threadID=1076026 - user1534664
1
谢谢。但我可以在注册表中找到HKLM>Software>WOW6432Node>Oracle和HKLM>Software>Oracle这两个位置。 - aiyagaze
9个回答

81
在 Windows 中,找出 Oracle 家目录的 bin 目录并从中运行 SQLPlus,然后检查任务管理器即可轻松了解其版本。如果是 32 位版本的 SQLPlus,则在“进程”选项卡上会看到一个类似以下样式的进程:
sqlplus.exe *32

如果是64位的话,该过程会像这样:

sqlplus.exe

同样适用于Windows Server 2012吗?我在任务管理器中看到它运行为sqlplus.exe,描述为“Oracle SQL * PLUS”。 - n00b
这种方法仅适用于任务管理器。如果您使用进程资源管理器,则会显示32位客户端的sqlplus.exe,但是您可以显示“映像类型”列,这将指示64位或32位。 - shonky linux user
1
好建议。虽然在32位操作系统上任务管理器不会显示“sqlplus.exe *32”,但它只会显示“sqlplus.exe” ;) - Tagar
对于Server 2012,“(32位)”将显示在应用程序名称后面。在您的情况下,它是64位。 - Ivan Chau
2
我在Windows 10任务管理器中找不到“*32”部分。我进入了任务管理器区域,在表格区域上右键单击,选择“选择列”,然后选择“平台”,似乎可以显示程序是64位还是32位。 - armyofda12mnkeys

45

进入%ORACLE_HOME%\inventory\ContentsXML文件夹并打开comps.xml文件。

在第二屏幕左右寻找<DEP_LIST>。
如果以下行有

  • PLAT="NT_AMD64"那么这个Oracle Home是64位的。
  • PLAT="NT_X86"那么这个Oracle Home是32位的。

    您可能同时安装了32位和64位的Oracle Home。


  • 2
    如果您拥有多个Oracle客户端,则非常有用! - stephen
    1
    这帮助我查找列表。 现在我有另一个问题:如何确定哪个是客户端/其他内容?“oracle.sysman.agent” VER =“11.1.0.1.0” PLAT =“NT_AMD64” “oracle.sysman.agent.gc” VER =“11.1.0.1.0” PLAT =“NT_AMD64” “oracle.rdbms.install.common” VER =“10.2.0.1.0” PLAT =“NT_AMD64” “oracle.swd.oui” VER =“10.2.0.1.0” PLAT =“NT_AMD64”/> “oracle.bali.share” VER =“11.1.1.2.0” PLAT =“NT_AMD64” “oracle.sysman.plugin.ai.main.agent” VER =“11.1.0.2.0” PLAT =“NT_AMD64” “oracle.dms” VER =“10.1.2.1.0” PLAT =“NT_AMD64”注意:我对此一无所知。 - geynske006
    @geynske006 不确定我是否来得及回复 - 但既然它们都是AMD64,你应该没问题,只是意味着你在所有方面都使用了32位。 - Donald Li

    12

    有一个对我来说非常简单且有效的方法是从命令提示符中执行 TNSPing:

    TNS Ping Utility for 32-bit Windows: Version 11.2.0.3.0 - Production on 13-MAR-2015 16:35:32
    

    马克,我认为你所提到的“32位”是指Windows,而不是Oracle的客户端。 - Veverke
    不是的。我在我的电脑上安装了Windows 8,并且由于工作要求,我安装了32位和64位客户端。 - Mark Bowytz
    1
    @MarkBowytz,但是你怎么知道你同时拥有32位和64位呢? - Isaac

    7
    在Linux中:
    1)查找sqlplus所在位置,
    [oracle@LINUX db_1]$ `which sqlplus`
    /app/oracle/product/11.2.0/db_1/bin/sqlplus
    

    2) 确定文件类型,

    [oracle@LINUX db_1]$ file /app/oracle/product/11.2.0/db_1/bin/sqlplus

    /app/oracle/product/11.2.0/db_1/bin/sqlplus:ELF 64位LSB可执行文件,x86-64架构,版本1(SYSV),动态链接(使用共享库)。适用于GNU/Linux 2.6.18,未剥离。


    5

    对于我而言,上述关于lib和lib32文件夹的链接都不能与Oracle Client 11.2.0配合使用。但是我在OTN社区中找到了以下内容:

    如果要检查客户端安装程序是否为32位或64位,则可以检查注册表。32位主目录位于HKLM> Software> WOW6432Node> Oracle,而64位主目录位于HKLM> Software> Oracle。


    2
    以下来自这里的内容未在此处提及:如果Oracle客户端是32位,则它将包含一个“lib”文件夹;但如果它是64位Oracle客户端,则它将有“lib”和“lib32”两个文件夹。另外,在Oracle 11.2.0.1中开始,64位的客户端版本和32位的Oracle客户端是分别发送的,并且有一个$ORACLE_HOME/lib64目录。$ORACLE_HOME/lib/ ==> 32 位$ORACLE_HOME/lib64 ==> 64 位或者$ORACLE_HOME/lib/ ==> 64 位$ORACLE_HOME/lib32 ==> 32 位

    2
    对于Oracle 12.1 Windows客户端,查看TNSPING命令的输出似乎能够成功: 在64位操作系统上安装32位版本:
    C:>tnsping TNS Ping Utility for 32-bit Windows: Version 12.1.0.2.0 - Production on 02-FEB-2016 15:44:37 Copyright (c) 1997, 2014, Oracle. All rights reserved.
    在64位操作系统上安装64位版本:
    D:>tnsping TNS Ping Utility for 64-bit Windows: Version 12.1.0.1.0 - Production on 02-FEB-2016 16:00:23 Copyright (c) 1997, 2013, Oracle. All rights reserved.

    2

    对于Unix系统

    grep "ARCHITECTURE" $ORACLE_HOME/inventory/ContentsXML/oraclehomeproperties.xml
    

    输出结果为:

    <PROPERTY NAME="ARCHITECTURE" VAL="64"/> 
    

    对于Windows系统

    findstr "ARCHITECTURE" %ORACLE_HOME%\inventory\ContentsXML\oraclehomeproperties.xml
    

    输出结果如下:

    <PROPERTY NAME="ARCHITECTURE" VAL="64"/>
    

    -1

    在64位系统上:

    32位驱动程序:C:\Windows\SysWOW64\odbcad32.exe

    64位驱动程序:C:\Windows\System32\odbcad32.exe

    转到驱动程序选项卡
    版本也显示在那里。


    网页内容由stack overflow 提供, 点击上面的
    可以查看英文原文,
    原文链接