确定我正在运行的Oracle客户端版本的最佳方法是什么?

时间:2009-07-23 13:17:28

标签: windows oracle

主题说明了一切:确定我正在运行的oracle客户端的确切版本的最佳方法是什么?我们的客户都在运行Windows。

我发现了一个运行tnsping实用程序的建议,没有参数,它显示版本信息。还有更好的方法吗?

客户端是否安装将此信息放在任何类型的文本文件中?

14 个答案:

答案 0 :(得分:31)

TNSPing命令行将显示版本。同样,sqlPlus.exe将打印其版本。您还可以转到客户端安装的“relnotes”目录中的自述文件。例如,10.2版有一个名为README_jdbc.txt的文件,它将告诉您已安装的版本。

答案 1 :(得分:28)

您可以针对SYS_CONTEXTv$session_connect_info命名空间中的当前会话ID SID使用USERENV视图。

e.g。

SELECT
  DISTINCT
  s.client_version
FROM
  v$session_connect_info s
WHERE
  s.sid = SYS_CONTEXT('USERENV', 'SID');

答案 2 :(得分:14)

问题#1:安装了多个Oracle客户端。

我在我的环境中看到的一个非常常见的问题是,我看到工作站和(app)服务器都有多个Oracle客户端,有时多达四个,可能还有不同的版本和体系结构。如果您依赖PATH并运行SQLPLUSTNSPING等实用程序,则会产生以下两种不可接受的结果之一:

  • 您的PATH成功解析了可执行文件,并获得了一个版本结果
  • 或者PATH没有解析可执行文件,而且没有结果。

无论哪种方式,您都可能对多个客户端安装视而不见。

问题#2:Instant Client没有TNSPING,有时不包含SQL * Plus。

如果计算机具有Oracle Instant Client(不是完整客户端),则不包括TNSPINGSQLPLUS是可选插件。所以不能依赖那些工具。此外,Instant Client有时作为解压缩解决方案安装,因此HKLM中没有Oracle Inventory,也没有。

问题#3:使用“自定义”安装客户端,未安装ODBC,OLEDB,ODP.Net和JDBC。

很明显,没有ODBC或JDBC自述文件可以从中获取版本信息。

<强>解决方案:

Instant客户端和完整客户端的共同点是名为oraclient10.dlloraclient11.dll的DLL文件,通常为:oraclient*.dll。让我们遍历硬盘找到它们并提取它们的版本信息。 PowerShell在这方面是惊人的,可以在一行中做到这一点,让我想起家庭甜蜜的Unix。因此,您可以以编程方式甚至远程方式执行此操作。

这是单行(对于右侧滚动感到抱歉,但那是单行的本质,是吗?)。假设您已经在PowerShell中了:

gci C:\,D:\ -recurse -filter 'oraclient*.dll' -ErrorAction SilentlyContinue | %{ $_.VersionInfo } | ft -Property FileVersion, FileName -AutoSize

如果您不在PowerShell中,即您只是在CMD shell中,那么没问题,只需拨打powershell " ... ",如下所示:

powershell "gci C:\,D:\ -recurse -filter 'oraclient*.dll' -ErrorAction SilentlyContinue | %{ $_.VersionInfo } | ft -Property FileVersion, FileName -AutoSize"

示例输出

这是我的一些系统的一些输出。这个坏公民有3个Oracle 11.2.0.3客户端。您可以看到其中一些是32位而另一些是64位:

FileVersion            FileName
-----------            --------
11.2.0.3.0 Production  C:\NoSync\app\oracle\product\11.2\client_1\bin\oraclient...
11.2.0.3.0 Production  C:\oracle\product\11.2.0\client_1\bin\oraclient11.dll
11.2.0.3.0 Production  C:\oracle64\product\11.2.0\client_1\bin\oraclient11.dll

另一个系统,这个系统在D:\

上有10g客户端
FileVersion           FileName
-----------           --------
10.2.0.4.0 Production D:\oracle\product\10.2\BIN\oraclient10.dll

<强>注意事项/问题

  • 这显然需要PowerShell,它是Windows 7+和Server 2008 R2 +的标准配置。如果你有XP(你不应该再使用它),你可以轻松安装PowerShell。

  • 我没有在8i / 9i或12c上试过这个。如果您正在运行8i / 9i,那么很有可能您使用旧操作系统并且没有PowerShell和Heaven帮助您。 使用12c,因为我看到有一个文件oraclient12.dll已安装。我还没有Windows 12c客户端可以玩。

答案 3 :(得分:8)

在Unix中

如果您不知道已安装的Oracle产品的位置或版本,可以从库存中找到它,该库存通常记录在/etc/oraInst.loc

> cat /etc/oraInst.loc

inventory_loc=/export/oracle/oraInventory       **--> Inventory location**
inst_group=dba


> cd /export/oracle/oraInventory
> cd ContentsXML

这里查找文件inventory.xml

> cat inventory.xml
<?xml version="1.0" standalone="yes" ?>
<!-- Copyright (c) 1999, 2010, Oracle. All rights reserved. -->
<!-- Do not modify the contents of this file by hand. -->
<INVENTORY>
<VERSION_INFO>
   <SAVED_WITH>11.2.0.2.0</SAVED_WITH>
   <MINIMUM_VER>2.1.0.6.0</MINIMUM_VER>
</VERSION_INFO>
<HOME_LIST>
<HOME NAME="OraDB_11G" LOC="/export/oracle/product/11.2.0.2" TYPE="O" IDX="2">

了解安装位置

export ORACLE_HOME=full path to install location
export ORACLE_HOME=/export/oracle/product/11.2.0.2
export PATH=$ORACLE_HOME/bin:$PATH

一个简单的“sqlplus”将为您提供已安装客户端的版本。

> sqlplus
SQL*Plus: Release 11.2.0.1.0 Production on Fri Mar 23 14:51:09 2012
Copyright (c) 1982, 2010, Oracle.  All rights reserved.

Enter user-name:

在上面的示例中,Oracle客户端的版本是11.2.0.1

在Windows中

Windows中的注册表位置变量是 INST_LOC

Start > Run > regedit > HKLM > Software > Oracle

检查Inst_loc条目值,该值将是软件安装位置。

您可以使用命令提示符,或者您可以导航/浏览到oracle主页位置,然后cd到bin目录到lauch sqlplus,它将为您提供客户端版本信息。

答案 4 :(得分:6)

运行安装程序,单击“已安装的产品...”。这将为您提供客户端安装的所有已安装组件的更详细列表,例如驱动程序,SQL * Plus等。

典型的Oracle安装将库存信息存储在C:\ Program Files \ Oracle \ Inventory中,但计算出已安装的版本不仅仅是打开文本文件。

这是AFAIK的权威,并显示可能已应用的任何修补程序(运行实用程序的修补程序不执行)。

编辑: CLI选项是使用OPatch实用程序:

c:\> path=%path%;<path to OPatch directory in client home, e.g., C:\oracle\product\10.2.0\client_1\OPatch>
c:\>set ORACLE_HOME=<oracle home directory of client, e.g., C:\Oracle\product\10.2.0\client_1>
c:\>opatch lsinventory

这为您提供了已安装客户端的整体版本。

答案 5 :(得分:3)

在Windows中 - &gt;使用Command Promt:

  

tnsping localhost

它显示版本,如果安装了32位64位客户端,例如:

  

适用于64位Windows的TNS Ping实用程序:版本10.2.0.4.0 - 2015年3月3日生产16:47:26

来源: https://decipherinfosys.wordpress.com/2007/02/10/checking-for-oracle-client-version-on-windows/

答案 6 :(得分:3)

转到“控制面板” - &gt; “管理工具”并打开“数据源(ODBC)”。默认情况下,将打开“User-DSN”选项卡,单击“添加”,弹出对话框:

enter image description here

答案 7 :(得分:3)

您可以在SQL Developer或SQLPLUS命令提示符中使用以下命令来查找版本号。

select * from v$version;

就我而言,它给了我下面提到的信息。

Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
PL/SQL Release 11.2.0.1.0 - Production
"CORE   11.2.0.1.0  Production"
TNS for 64-bit Windows: Version 11.2.0.1.0 - Production
NLSRTL Version 11.2.0.1.0 - Production

答案 8 :(得分:2)

这是另一种方式,但不一定是“更好”的方式:

  

确定当前版本

     

确定哪个Oracle客户端   你已经在电脑上安装的版本,   运行sql *以及连接到DW。该   文件夹名称可能会有所不同   在您的Oracle设置上,但应该是   类似。要运行sql *加上选择   start > programs > Oracle > Oracle - OUDWclient > Application Development > sqlplus。输入您的DW   用户名,密码和'ordj'   主机名或服务名称。这个   应该连接到DW通过   sqlplus中。在这一点上,你可以   写自己的sql语句来拉   来自DW的信息(如果你知道的话)   SQL)。 Oracle客户端版本可以   确定在第一行 -   'SQL * Plus:版本10.2.0.1.0'。

[Reference] Oracle客户信息http://www.ohio.edu/technology

答案 9 :(得分:2)

你应该在select * from v$version;的末尾添加一个分号。

像这样,您将获得所需的所有信息......

如果你只是寻找Oracle,你可以这样做:

SQL> select * from v$version where banner like 'Oracle%';

答案 10 :(得分:1)

我假设你想以编程方式做某事。

您可以考虑使用getenv从ORACLE_HOME环境变量中提取值。假设您正在谈论C或C ++或Pro * C.

答案 11 :(得分:0)

转到ORACLE_HOME / bin并运行&#39; 文件sqlplus &#39;。见下面的输出。

64-Bit:- cd /tech/oracle/product/v11/bin

$  file sqlplus

sqlplus: **ELF 64-bit** LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.18, not stripped


32-Bit $ cd /tech/oracle/product/11204_32bit/bin

$ file sqlplus

sqlplus: **ELF 32-bit** LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.18, not stripped

答案 12 :(得分:0)

您可以通过在cmd上运行此命令sqlplus / nolog来获取oracle客户端的版本。另一种选择是浏览到路径C:\ Program Files \ Oracle \ Inventory并打开“ Inventory.xml”文件,该文件将为您提供以下版本:

<?xml version="1.0" standalone="yes" ?>
<!-- Copyright (c) 1999, 2019, Oracle and/or its affiliates.
All rights reserved. -->
<!-- Do not modify the contents of this file by hand. -->
<INVENTORY>
<VERSION_INFO>
   <SAVED_WITH>12.2.0.1.4</SAVED_WITH>
   <MINIMUM_VER>2.1.0.6.0</MINIMUM_VER>
</VERSION_INFO>

答案 13 :(得分:-3)

只需运行:select * from v $ version