サーバー上の各OracleホームにインストールされているOracleのバージョンをプログラムから判別する必要があります。ホームにはまだデータベースが作成されていない可能性があるため、データベースの外部で(つまり、データベースに接続せずに)これを実行できる必要があります。また、リモートプログラムからこれを実行できることが非常に望ましいでしょう。
これは、.Net(重要な場合はC#)を実行しているWindowsプログラムからのものです。
I現在、リモートレジストリキーを読み取っており(この手法を使用: https://stackoverflow.com/questions/1566547/how-to-read-remote-registry-keys )、に従ってすべてのOracleホームを検索しています。 このメソッド。これは正常に機能しますが、これらのキーを調べたところ、正確なバージョン/リリースに関する情報は見当たりません。
Oracle Home自体の名前はもちろん1)信頼できる指標ではなく2 )正確なバージョン/リリース(たとえば「10.2.0.4.0」)がありません。基本的に、Oracle UniversalInstallerが[インストールされた製品]ボタンに何を表示するかを理解する方法を探しています。
明確にする必要があります。すべてのサーバーで、Windows2003-2008が実行されます。
コメント
回答
データベースホームが適切にインストールされている場合、中央インベントリそれらについてのリストがあります。 Windowsの中央インベントリは、C:\Program Files\Oracle\Inventory
にあります。 Linux / UNIXプラットフォームでは、中央インベントリの場所は/etc/oraInst.loc
にあります。インベントリのContentsXML\inventory.xml
には、インストールされている家のリストがXML形式で表示されます。例:
<INVENTORY> <VERSION_INFO> <SAVED_WITH>12.1.0.2.0</SAVED_WITH> <MINIMUM_VER>2.1.0.6.0</MINIMUM_VER> </VERSION_INFO> <HOME_LIST> <HOME NAME="OraGI12Home1" LOC="/opt/oracle/grid12102" TYPE="O" IDX="1"/> <HOME NAME="OraDB12Home1" LOC="/opt/oracle/base/product/db12102ee" TYPE="O" IDX="2"/> <HOME NAME="OraDb11g_home1" LOC="/opt/oracle/base/product/db11204ee" TYPE="O" IDX="3"/> </HOME_LIST> </INVENTORY>
このリストを解析して、たとえば次のようにopatchを使用して詳細情報を見つけることができます。
/opt/oracle/grid12102/OPatch/opatch lsinventory -oh /opt/oracle/grid12102 -details /opt/oracle/base/product/db12102ee/OPatch/opatch lsinventory -oh /opt/oracle/base/product/db12102ee -details /opt/oracle/base/product/db11204ee/OPatch/opatch lsinventory -oh /opt/oracle/base/product/db11204ee -details
Windowsの例は次のようになります。
C:\oracle\base\product\12.1.0\dbhome_1\OPatch\opatch lsinventory -oh C:\oracle\base\product\12.1.0\dbhome_1 -details
もちろん、上記はサーバー上で実行する必要があります。
これは、適切にインストールされた最良のシナリオです。最悪のシナリオは、家が別々の在庫を使用するか、在庫をまったく使用せず、サーバー上のすべてのファイルシステムでOracleのインストールの可能性を検索する必要があることです。
回答
Oracleバージョンを表示する別の方法は、dbvユーティリティを呼び出すことです。これは、データベースサーバーのインストールでのみ機能します。このツールのバージョンは、常にデータベースのバージョンと一致している必要があります。最初に適切な環境(PATH; ORACLE_HOME、LD_LIBRARY_PATH)を設定する必要があります。そうすると、次のようになります。
$ $ORACLE_HOME/bin/dbv DBVERIFY: Release 12.1.0.2.0 - Production on Sun Jan 01 12:00:00 2016 Copyright (c) 1982, 2014, Oracle and/or its affiliates. All rights reserved. Keyword Description (Default) ---------------------------------------------------- FILE File to Verify (NONE) START Start Block (First Block of File) END End Block (Last Block of File) BLOCKSIZE Logical Block Size (8192) LOGFILE Output Log (NONE) FEEDBACK Display Progress (0) PARFILE Parameter File (NONE) USERID Username/Password (NONE) SEGMENT_ID Segment ID (tsn.relfile.block) (NONE) HIGH_SCN Highest Block SCN To Verify (NONE) (scn_wrap.scn_base OR scn)
最初の行にはリリースが含まれています
コメント
- これはローカルで機能するように見えますが、リモートで呼び出す組み込みの方法はありますか?
- いいえ、ありません' tはそう思います。 Linuxシステムでは、sshを使用してサーバーへのログインを試みます。
C:\tnsping>>E:\tnspingoutput.txt
。次に、高級言語を使用してテキストファイルからバージョンを抽出します。