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

chr*_*ris 65 windows oracle

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

我找到了一个运行tnsping实用程序的建议,没有参数,它显示版本信息.有没有更好的办法?

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

Jos*_*ode 35

您可以v$session_connect_info针对当前会话ID(SID来自USERENV命名空间SYS_CONTEXT)使用该视图.

例如

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

  • `'userenv'` 是 [`sys_context`](http://docs.oracle.com/cd/E11882_01/server.112/e26088/functions184.htm) 函数的特定命名空间,并且是一个常量。 (2认同)

akf*_*akf 32

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


Jos*_*ber 15

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

我在我的环境中看到的一个非常常见的问题是,我看到工作站和(app)服务器都有多个Oracle客户端,有时多达四个,可能还有不同的版本和体系结构.如果您依赖PATH并运行类似的实用程序,SQLPLUS或者TNSPING您将获得两个不可接受的结果之一:

  • 要么您PATH成功解析可执行文件,您将获得一个版本的结果
  • 或者,PATH没有解析可执行文件,你没有得到任何结果.

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

问题2:Instant Client没有TNSPING,有时不包括SQL*Plus.

如果计算机具有Oracle Instant Client(不是完整客户端),TNSPING则不包括在内,并且SQLPLUS是可选插件.所以不能依赖那些工具.此外,Instant Client有时作为解压缩解决方案安装,因此HKLM中没有Oracle Inventory和任何内容.

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

显而易见的情况是,没有ODBC或JDBC自述文件来从中获取版本信息.

解:

有一两件事,即时客户端和完整的客户端有一个共同点,就是被称为一个DLL文件oraclient10.dll,oraclient11.dll一般:oraclient*.dll.让我们遍历硬盘找到它们并提取它们的版本信息.PowerShell在这方面是惊人的,可以在一行中做到这一点,让我想起家庭甜蜜的Unix.所以你可以以编程方式甚至远程方式执行此操作.

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

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

如果你不在PowerShell中,即你只是在一个CMD shell中,那么没问题,只需调用powershell " ... ",如下所示:

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

示例输出

这是我的一些系统的一些输出.这个坏公民有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
Run Code Online (Sandbox Code Playgroud)

另一个系统,这一个在D上有10g客户端:

FileVersion           FileName
-----------           --------
10.2.0.4.0 Production D:\oracle\product\10.2\BIN\oraclient10.dll
Run Code Online (Sandbox Code Playgroud)

注意事项/问题

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

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

  • 还可以在 Windows 上检查 `oci.dll` 的属性。 (2认同)

Sam*_*aac 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
Run Code Online (Sandbox Code Playgroud)

这里查找文件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">
Run Code Online (Sandbox Code Playgroud)

一旦知道安装位置

export ORACLE_HOME=full path to install location
export ORACLE_HOME=/export/oracle/product/11.2.0.2
export PATH=$ORACLE_HOME/bin:$PATH
Run Code Online (Sandbox Code Playgroud)

一个简单的"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:
Run Code Online (Sandbox Code Playgroud)

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

在Windows中

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

Start > Run > regedit > HKLM > Software > Oracle
Run Code Online (Sandbox Code Playgroud)

检查将作为软件安装位置的Inst_loc条目值.

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


小智 8

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

select * from v$version;
Run Code Online (Sandbox Code Playgroud)

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

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
Run Code Online (Sandbox Code Playgroud)


DCo*_*kie 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
Run Code Online (Sandbox Code Playgroud)

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

  • ...并且每个oracle主目录通常都有一个安装程序实例(检查路径变量),因此您可能需要启动多个安装程序才能查看所有已安装的客户端产品. (2认同)

Her*_*lez 5

在 Windows 中 -> 使用命令提示符:

tnsping 本地主机

它显示版本以及是否安装了 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/


Boe*_*ern 5

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

在此处输入图片说明


Dan*_*ton 2

这是另一种方式,尽管不一定“更好”:

确定您当前的版本

要确定您的 PC 上安装的 Oracle 客户端版本,请运行 sql *plus 连接到 DW。根据您的 Oracle 设置,文件夹名称可能会有所不同,但应该相似。要运行 sql *plus 选择 start > programs > Oracle > Oracle - OUDWclient > Application Development > sqlplus. 输入您的 DW 用户名、密码以及主机名或服务名称“ordj”。这应该通过 sqlplus 将您连接到 DW。此时,您可以编写自己的sql语句来从DW中提取信息(如果您了解sql)。Oracle 客户端版本可以在第一行中确定 - 'SQL*Plus: Release 10.2.0.1.0'。

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