マシン一台に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;…