主题说明了一切:确定我正在运行的oracle客户端的确切版本的最佳方法是什么?我们的客户都在运行Windows。
我发现了一个运行tnsping实用程序的建议,没有参数,它显示版本信息。还有更好的方法吗?
客户端是否安装将此信息放在任何类型的文本文件中?
答案 0 :(得分:31)
TNSPing命令行将显示版本。同样,sqlPlus.exe将打印其版本。您还可以转到客户端安装的“relnotes”目录中的自述文件。例如,10.2版有一个名为README_jdbc.txt的文件,它将告诉您已安装的版本。
答案 1 :(得分:28)
您可以针对SYS_CONTEXT
中v$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
并运行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自述文件可以从中获取版本信息。
<强>解决方案:强>
Instant客户端和完整客户端的共同点是名为oraclient10.dll
,oraclient11.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)
如果您不知道已安装的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中的注册表位置变量是 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)
答案 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