
レガシーシステムから最新環境へのマイグレーションを進める中で、「マイグレーションが完了するまでの間、同一端末内に 32-bit と 64-bit のアプリケーションを混在させたい」というケースは少なくありません。
特に近年は、最新の Oracle Database 23ai において 32-bit 版のモジュールやクライアントの提供が廃止されるなど、64-bit 環境への完全移行が強く推奨される時代となっています。
しかし、段階的なマイグレーションにおいては、引き続き「PowerBuilder の 32-bit アプリと 64-bit アプリを共存させ、それぞれに対応した Oracle Client を利用することは可能なのか?」という疑問を持たれる方も多いかと思います。
そこで今回は、「Oracle Client 32-bit / 64-bit の共存」に関して最新環境での検証内容と、設定時の注意点について解説します。
はじめに、PowerBuilder アプリケーションを 32-bit / 64-bit 共存環境で動作させる場合、Oracle Client もそれぞれのアーキテクチャ (32-bit と 64-bit) に合わせてインストールする必要があります。
また PowerBuilder 2022 R3 の開発環境 (IDE) は、これまでのバージョンと同様に 32-bit プロセスで動作します。
そのため、IDE 上での DB プロファイルや DB ペインタによる DB 接続、およびコンパイル時の SQL 構文チェックを行うには、引き続き 32-bit 版の Oracle Client が必要となります。
ここで注意が必要なのが、Oracle Database 23ai では 32-bit 版のクライアントが提供されていないという点です。
そのため、IDE や 32-bit PowerBuilder アプリケーションを動作させるために 32-bit Oracle Client を利用する場合は、21c など 23ai 以前のバージョンの Oracle Client を利用する必要があります (※ Oracle Database と Client のバージョン互換性については、Oracle 社の公式ドキュメントを必ずご確認ください)。
今回は、サーバー側を Oracle Database 23ai の 64-bit、クライアント側に 21c の 32-bit と 64-bit の Oracle Client をインストールします。
最大の注意点は「32-bit と 64-bit でインストール先のディレクトリを分ける必要がある」ということです。同じ階層にインストールしないよう、明確にディレクトリを分けて設定してください。


Oracle Client 21c のインストール後、データベースの接続先を定義する tnsnames.ora を設定します。今回は、32-bit / 64-bit 双方で同じ接続先を設定する例を示します。
32-bit 用 tnsnames.ora 設定例
# tnsnames.ora Network Configuration File: C:\app\client\windows-x86\product\21.0.0\client_1\NETWORK\ADMIN\tnsnames.ora
# Generated by Oracle configuration tools.
SUPPORT =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = NCS)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = orcl)
)
)
64-bit 用 tnsnames.ora 設定例
# tnsnames.ora Network Configuration File: C:\app\client\windows-x64\product\21.0.0\client_1\NETWORK\ADMIN\tnsnames.ora
# Generated by Oracle configuration tools.
SUPPORT =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = NCS)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = orcl)
)
)
※名前解決のため、Windows フォルダー内にある hosts の設定も適宜行ってください。
次に、PowerBuilder でシンプルなサンプルアプリを作成し、動作を確認します。
アプリケーションの Open 時に Oracle データベースに接続し、ウィンドウを開く処理です。
【アプリケーションの Open イベント】
// Profile support SQLCA.DBMS = "ORA Oracle" SQLCA.ServerName = "SUPPORT" SQLCA.LogId = "ncs" SQLCA.LogPass = "ncs" connect ; // 画面オープン Open(w_oracle)
オープンしたウィンドウのボタンを押したときに、現在の動作ビット数と sqlcode を返すプログラムを記述します。
【ボタンの clicked イベント】
Environment env // 環境を取得 GetEnvironment( env ) // SQL コードをタイトルに表示 MessageBox(String(env.ProcessBitness) + "-bit",SQLCA.sqlcode)


32-bit、64-bit 両方を IDE 上で実行した結果、どちらの環境でも正常に動作し、sqlcode が 0 (正常接続) になることが確認できました。
(もちろん、どちらか一方の Oracle Client しかインストールされていない場合、該当しないアプリの sqlcode は -1 となり接続できません)。
段階的なマイグレーションにおいて、32-bit と 64-bit の PowerBuilder アプリケーションを共存させ、それぞれの Oracle Client を利用することは可能です。
しかし、以下の点には十分な注意が必要です。
Oracle Database 23ai 以降を利用する場合、32-bit 環境向けには 23ai 以前の Client (21c など) を用意する必要がある。
Oracle Client のインストール先ディレクトリは、32-bit / 64-bit で分ける。
レガシーな 32-bit 環境から、モダンな 64-bit 環境へシステムをマイグレーションする過渡期において、今回の検証結果が環境構築の参考になれば幸いです。
「システムのマイグレーションに併せてデータベースの移行を行いたい。簡単にデータを移行する方法はないか?」というお問い合わせも増えています。異なるDB へのデータ転送について興味がある方は、こちらの記事も併せてご確認ください。