Oracle Instant Client の64ビット版と32ビット版を共存させる方法

Oracle Instant Client の64ビット版と32ビット版を共存させる方法

1台の Windows マシンで、Oracle Instant Client の 64 ビット版と 32 ビット版を共存させる方法を解説します。私の環境では複数の Oracle を利用するアプリケーションが存在していますが、あるアプリケーションは Oracle Instant Client の 64 ビット版が必要であったり、また別のアプリケーションは Oracle Instant Client の 32 ビット版がないと動作しなかったりエラーになったりします。

今回紹介する方法で、少なくとも私の環境では全ての Oracle 接続ソフトが問題なく動作することを確認済みです。

なお非常に古い記事ですが、こちらの英語の記事では .NET アプリケーションで 32 ビット版と 64 ビット版の切り替えが問題なく出来たという多数のユーザーの報告があります。この記事でもほぼ同様の手法をとっていますので、.NET アプリケーションでの実績に関しては問題ないようです。


検証環境

検証に使用した環境及びアプリケーションは以下の通りです。

- Windows 10 Pro 64ビット版
- Oracle SQL Developer (Oracle 開発環境)
- DBeaver (マルチデータベース接続ソフト)
- SQL Workbench/J (マルチデータベース接続ソフト)
- OSqlEdit Oracle SQLエディタ

Oracle Instant Client の 32 ビット版と 64 ビット版をダウンロード

Oracle Instant Client の 32 ビット版と 64 ビット版をダウンロードします。注意が必要なのは、必ず同じバージョンをダウンロードします。今回は Version 12.2.0.1.0 をダウンロードします。

Instant Client Downloads for Microsoft Windows [32-bit]
http://www.oracle.com/technetwork/topics/winsoft-085727.html

Instant Client Downloads for Microsoft Windows (x64) [64-bit]
http://www.oracle.com/technetwork/topics/winx64soft-089540.html

それぞれのファイルをダウンロードしたら、32 ビット用のインストールディレクトリと 64 ビット用のインストールディレクトリをそれぞれ以下のように作成します。

64 ビット => C:\APPL\instantclient-windows.x64-12.2.0.1.0\
32 ビット => C:\APPL\instantclient-windows.x86-12.2.0.1.0\

作成したディレクトリにそれぞれ 32 ビット版と 64 ビット版を全て解凍します。絶対に混在させないようにしましょう。これで 32 ビット版と 64 ビット版専用のディレクトリが作成されます。

[32bit Oacle Instant Client]
C:\APPL\instantclient-windows.x86-12.2.0.1.0\instantclient_12_2

[64bit Oacle Instant Client]
C:\APPL\instantclient-windows.x64-12.2.0.1.0\instantclient_12_2


それぞれのディレクトリにリンクを張る

次に 32 ビット環境から 64 ビット版の Oracle Instant Client へ、またその逆に 64 ビット環境から 32 ビット版の Oracle Instant Client へリンクを張るようにします。

コマンドプロンプトを管理者として実行し、以下のようにリンクを張ります。

C:\> cd C:\Windows\System32
C:\Windows\System32> mklink oracle_instant_client12_2 C:\APPL\instantclient-windows.x64-12.2.0.1.0\instantclient_12_2
oracle_instant_client12_2 <<===>> C:\APPL\instantclient-windows.x64-12.2.0.1.0\instantclient_12_2 のシンボリック リンク が作成されました

C:\> cd C:\Windows\SysWOW64
C:\Windows\SysWOW64> mklink oracle_instant_client12_2 C:\APPL\instantclient-windows.x86-12.2.0.1.0\instantclient_12_2
oracle_instant_client12_2 <<===>> C:\APPL\instantclient-windows.x86-12.2.0.1.0\instantclient_12_2 のシンボリック リンク が作成されました

つまり C:\Windows\System32 フォルダから 64 ビット版 Oracle Instant Client にリンクを張り、また C:\Windows\SysWOW64 から 32 ビット版の Oracle Instant Client にリンクを張ります。

また2つのリンク名は必ず同じにしなければなりません。この例では oracle_instant_client12_2 というリンク名にしています。

PATH 環境変数を設定する

次に Windows の PATH 環境変数を設定します。以下の画像のようにユーザー環境変数の PATH を編集し、以下のように C:\Windows\System32\oracle_instant_client12_2 を追加します (下図の青で囲まれた部分)。


追加したら OK ボタンを押して変更を反映させます。これにより 32 ビット版と 64 ビット版の Oracle Instant Client が使い分けられるようになります。

ただしアプリケーションによっては上手く認識できないものも存在するかもしれませんが、検証を進めて判明次第問題点と解決方法を記載したいと思います。