マシン一台にOracle10.1.0とOracle10.2.0を共存させる

違うバージョンのOracleを用意したいが予算がないため、専用のマシンを用意できないような場合、今回紹介する方法は有効です。

今回はOracle10.1とOracle10.2での動作を確認していますが、9iと10gといったメジャーバージョンが違う組み合わせでも可能な方法と思われます。

設定のポイントはポート番号の使いわけです。

前提:Oracle10.1はインストールおよびインスタンス、リスナー作成済

1. Oracle10.1のリスナーとインスタンスのサービスを停止

2. Oracle10.2をインストール

3. Oracle10.2のインスタンスを作成(混乱を避けるためOracle10.1とは違うインスタンス名を設定する)

4. Oracle10.2のNet Configuration Assistantでリスナーを作成
(リスナー名とサービス名についてOracle10.1のものと重複しないようにする)

5. Oracle10.2のNet Configuration Assistantでローカルネット接続を作成
(サービス名をOracle10.1のものと重複しないようにする)

6. Oracle10.2のリスナーとインスタンスを起動する

7. 初期化パラメーターを変更する。systemユーザで下記のSQLを実行する

ALTER SYSTEM SET local_listener="(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=localhost)(PORT=1522)))" SCOPE=spfile;

8. Oracle10.2のリスナーとインスタンスを停止する

9. Oracle10.2のlistener.oraとtnsnames.oraを編集する
【listener.ora】

LISTENER2 =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1522))
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0))
    )
  )



SID_LIST_LISTENER2 =
  (SID_LIST =
    (SID_DESC =
      (SID_NAME = PLSExtProc)
      (ORACLE_HOME = D:\oracle\product\10.2.0\db_1)
      (PROGRAM = extproc)
    )
  )

【tnsnames.ora】

ARIELDB2 =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1522))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = orcl2)
    )
  )

EXTPROC_CONNECTION_DATA =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0))
    )
    (CONNECT_DATA =
      (SID = PLSExtProc)
      (PRESENTATION = RO)
    )
  )

10. Oracle10.2のリスナーとインスタンスを起動する

11. Oracle10.1のリスナーとインスタンスを起動する


※Oracle10.1がインストールされている状態でOracle10.2をインストールすると環境変数のパスは以下の例のようになるため、Oracle10.1のインスタンスに接続しにいくときはフルパスでsqlplusを実行する必要があります。
またexpコマンドやlsnrctlコマンドについても同様のことが言えます。

(10.2インストール前)

D:\oracle\product\10.1.0\Db_1\bin;D:\oracle\product\10.1.0\Db_1\jre\1.4.2\bin\client;D:\oracle\product\10.1.0\Db_1\jre\1.4.2\bin;…

(10.2インストール後)

D:\oracle\product\10.2.0\db_1\bin;D:\oracle\product\10.1.0\Db_1\bin;D:\oracle\product\10.1.0\Db_1\jre\1.4.2\bin\client;D:\oracle\product\10.1.0\Db_1\jre\1.4.2\bin;…