Oracleクライアントのバージョン問題
Oracleのサーバとクライアントはバージョンの組み合わせによって接続できないパターンがあります。
http://www.oracle.co.jp/products/system/matrix_db.html
定期的にバージョンアップしていれば大して問題にならないのですが、動いているシステムは出来るだけそっとして置きたいもので、
手元の環境も8.1.6と10.2
のサーバが混在していたりします。
さて、ここで問題になるのが両方のサーバにアクセスしたいとき。
クライアントを9iR2にすればどちらもアクセスできますが、既存のソフトが8iまでしかサポートしていない。さあどうしましょう。
前述の通りOracleのクライアントは複数のバージョンをインストールすることが可能ですが、
利用時にどのクライアントを使うか切り替えなければいけません。
ユーザにシステムを使うたびに手動で切り替えてもらえばいけそうですが、不細工ですし手間もかかります。
Oracle10gよりInstant Clientという、配布が簡単なクライアントソフトができました。
このソフトはファイルを任意のフォルダにコピーし、環境変数の設定をするだけでOracleに接続できます。これを利用することで、
問題を一気に解決できないでしょうか。
ダウンロードはこちらから
http://otn.oracle.co.jp/software/tech/oci/instantclient/10104/instantclient_win_dl.html
使い方はこちらから
http://otndnld.oracle.co.jp/software/tech/oci/instantclient/pdf/Instant_Client_SetUp.pdf
マニュアルどおりだとInstantClientのフォルダを環境変数に登録しなければいけないのですが、
Oracleのバージョン問題に対応することが目的なのでそんなこ
とはしません。
環境変数はコマンドラインからSETコマンドで設定が出来ますので、
バッチファイルを利用するとパソコンの設定を何も行わずにファイルのコピーだけでOracleにアクセスするアプリケーションを作ることが出来ます。
たとえばInstantClientを
C:\OracleInstantClient\10.2.0.2
に保存したとすると
InstantClient用のSQL*PLUSを保存したディレクトリに下記内容でバッチファイ
ルを作成します。
SET
TNS_ADMIN=C:\OracleInstantClient\10.2.0.2
SET NLS_LANG=JAPANESE_JAPAN.JA16SJIS
SET PATH=C:\OracleInstantClient\10.2.0.2
sqlplus.exe
あとはそのバッチファイルを実行するだけでSQL*PLUSが立ち上がります。
これを自作のアプリケーションに応用してやればいいだけなのですが・・・