主題はそれをすべて言います:私が実行しているOracleクライアントの正確なバージョンを決定する最良の方法は何ですか?クライアントはすべてWindowsを実行しています。
バージョン情報を表示するtnspingユーティリティをパラメーターなしで実行することをお勧めします。もっと良い方法はありますか?
クライアントのインストールは、この情報を何らかの種類のテキストファイルに格納しますか?
現在のセッションID( v$session_connect_info
のSID
名前空間のUSERENV
)に対してSYS_CONTEXT
ビューを使用できます。
例えば.
SELECT
DISTINCT
s.client_version
FROM
v$session_connect_info s
WHERE
s.sid = SYS_CONTEXT('USERENV', 'SID');
TNSPingコマンドラインにバージョンが表示されます。同様に、sqlPlus.exeはそのバージョンを出力します。クライアントインストールの「relnotes」ディレクトリにあるreadmeファイルに移動することもできます。たとえば、バージョン10.2にはREADME_jdbc.txtという名前のファイルがあり、インストールされているバージョンがわかります。
問題#1:複数のOracleクライアントがインストールされています。
私の環境で見られる非常に一般的な問題は、ワークステーションと(アプリ)サーバーの両方が複数のOracleクライアント、時には最大4つ、場合によってはバージョンやアーキテクチャが異なることです。 PATH
に依存しており、SQLPLUS
やTNSPING
などのユーティリティを実行している場合、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.dll
、oraclient11.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クライアントがありません。
インストールされている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ホームの場所に移動/探索してから、binディレクトリに移動してsqlplusを起動すると、クライアントのバージョン情報が表示されます。
インストーラーを実行し、「インストール済み製品...」をクリックします。これにより、クライアントインストールのすべてのインストール済みコンポーネント(ドライバー、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
これにより、インストールされているクライアントの全体的なバージョンが得られます。
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/
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
select * from v$version;
の最後にセミコロンを配置する必要があります。
このように、必要な情報をすべて取得できます...
たとえば、Oracleだけを探している場合は、次のようにできます。
SQL> select * from v$version where banner like 'Oracle%';
これは別の方法ですが、必ずしも「より良い」方法ではありません。
現在のバージョンの確認
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
私はあなたがプログラムで何かをしたいと思っていると思います。
Getenvを使用してOracle_HOME環境変数から値を取得することを検討してください。 CまたはC++またはPro * Cを使用していると仮定します。
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