web-dev-qa-db-ja.com

実行しているOracleクライアントのバージョンを判断する最良の方法は何ですか?

主題はそれをすべて言います:私が実行しているOracleクライアントの正確なバージョンを決定する最良の方法は何ですか?クライアントはすべてWindowsを実行しています。

バージョン情報を表示するtnspingユーティリティをパラメーターなしで実行することをお勧めします。もっと良い方法はありますか?

クライアントのインストールは、この情報を何らかの種類のテキストファイルに格納しますか?

64
chris

現在のセッションID( v$session_connect_infoSID名前空間のUSERENV)に対してSYS_CONTEXTビューを使用できます。

例えば.

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

TNSPingコマンドラインにバージョンが表示されます。同様に、sqlPlus.exeはそのバージョンを出力します。クライアントインストールの「relnotes」ディレクトリにあるreadmeファイルに移動することもできます。たとえば、バージョン10.2にはREADME_jdbc.txtという名前のファイルがあり、インストールされているバージョンがわかります。

32
akf

問題#1:複数のOracleクライアントがインストールされています。

私の環境で見られる非常に一般的な問題は、ワークステーションと(アプリ)サーバーの両方が複数のOracleクライアント、時には最大4つ、場合によってはバージョンやアーキテクチャが異なることです。 PATHに依存しており、SQLPLUSTNSPINGなどのユーティリティを実行している場合、2つの受け入れられない結果のいずれかがあります。

  • PATHが実行可能ファイルを正常に解決し、1つのバージョンの結果が得られます
  • または、PATHが実行可能ファイルを解決しなかったため、結果が得られません。

いずれにせよ、複数のクライアントのインストールを盲目にしている可能性があります。

問題#2:インスタントクライアントにはTNSPINGがなく、時にはSQL * Plusが含まれていません。

コンピューターにOracle Instant Client(フルクライアントではない)がある場合、TNSPINGは含まれず、SQLPLUSはオプションのアドオンです。そこにあるこれらのツールに頼ることはできません。さらに、Instant Clientはunzip-and-goソリューションとしてインストールされることがあるため、HKLMにはOracle Inventoryも何もありません。

問題#3:クライアントは「カスタム」を使用してインストールされ、ODBC、OLEDB、ODP.Net、およびJDBCはインストールされませんでした。

明らかに、バージョン情報を取得するODBCやJDBCのreadmeはありません。

解決策:

インスタントクライアントと完全なクライアントが共通していることの1つは、DLLファイル(oraclient10.dlloraclient11.dll、一般的にはoraclient*.dll)です。それでは、ハードディスクを走査してそれらを見つけ、バージョン情報を抽出しましょう。 PowerShellはこれに驚くほど優れており、1行で実行できます。ホームスイートのUnixを思い出します。したがって、プログラムで、またはリモートでこれを行うことができます。

これがワンライナーです(右スクロールについては申し訳ありませんが、それがワンライナーの性質ですよね?)。既にPowerShellを使用している場合:

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

PowerShellを使用していない場合、つまり、単にCMDシェルを使用している場合は、次のように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

警告/問題

  • これには明らかにWindows 7以降およびServer 2008 R2 +の標準であるPowerShellが必要です。 XPがある場合(これは必要ありません)、PowerShellを簡単にインストールできます。

  • 8i/9iまたは12cではこれを試していません。 8i/9iを実行している場合は、古いOSを使用している可能性が高く、PowerShellとHeavenがあなたを助けてくれません。インストールされたoraclient12.dllというファイルがあるので、それは12cで動作しますshould。まだプレイできるWindows 12cクライアントがありません。

14
Joshua Huber

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ホームの場所に移動/探索してから、binディレクトリに移動してsqlplusを起動すると、クライアントのバージョン情報が表示されます。

8

インストーラーを実行し、「インストール済み製品...」をクリックします。これにより、クライアントインストールのすべてのインストール済みコンポーネント(ドライバー、SQL * Plusなど)のより詳細なリストが表示されます。

一般的なOracleのインストールでは、インベントリ情報はC:\ Program Files\Oracle\Inventoryに保存されますが、インストールされたバージョンを把握することは、単にテキストファイルを開くだけではありません。

これは信頼できるものであり、同様に適用された可能性のあるすべてのパッチを表示します(ユーティリティの実行は行いません)。

編集: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

これにより、インストールされているクライアントの全体的なバージョンが得られます。

6
DCookie

Windows->コマンドプロンプトを使用:

tnsping localhost

バージョンを表示し、32 o 64ビットクライアントがインストールされている場合、たとえば:

64ビットWindows用のTNS Pingユーティリティ:バージョン10.2.0.4.0-03-MAR-2015 16:47:26の運用

ソース: https://decipherinfosys.wordpress.com/2007/02/10/checking-for-Oracle-client-version-on-windows/

4

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
3
ICEMAN

[コントロールパネル]-> [管理ツール]に移動し、[データソース(ODBC)]を開きます。デフォルトでは、「User-DSN」タブが開き、「追加」をクリックするとダイアログがポップアップ表示されます:

enter image description here

3
Boern

select * from v$version;の最後にセミコロンを配置する必要があります。

このように、必要な情報をすべて取得できます...

たとえば、Oracleだけを探している場合は、次のようにできます。

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

これは別の方法ですが、必ずしも「より良い」方法ではありません。

現在のバージョンの確認

PCにインストールしたOracleクライアントのバージョンを確認するには、sql*plusを実行してDWに接続します。フォルダー名は、Oracleのセットアップによって多少異なる場合がありますが、似ている必要があります。 sql*plusを実行するには、start > programs > Oracle > Oracle - OUDWclient > Application Development > sqlplusを選択します。ホスト名またはサービス名にDWユーザー名、パスワード、および「ordj」を入力します。これにより、sqlplusを介してDWに接続されます。この時点で、DWから情報を引き出すための独自のSQLステートメントを作成できます(SQLを知っている場合)。 Oracleクライアントのバージョンは、最初の行「SQL * Plus:リリース10.2.0.1.0」で確認できます。

[参照] Oracleクライアント情報 http://www.ohio.edu/technology

2

私はあなたがプログラムで何かをしたいと思っていると思います。

Getenvを使用してOracle_HOME環境変数から値を取得することを検討してください。 CまたはC++またはPro * Cを使用していると仮定します。

1
EvilTeach

Oracle_HOME/binに移動し、「file sqlplus」を実行します。以下の出力を参照してください。

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
0
Manu Verma