CLOSE
oralce 32-bit 64-bit

はじめに

レガシーシステムから最新環境へのマイグレーションを進める中で、「マイグレーションが完了するまでの間、同一端末内に 32-bit と 64-bit のアプリケーションを混在させたい」というケースは少なくありません。
特に近年は、最新の Oracle Database 23ai において 32-bit 版のモジュールやクライアントの提供が廃止されるなど、64-bit 環境への完全移行が強く推奨される時代となっています。

しかし、段階的なマイグレーションにおいては、引き続き「PowerBuilder の 32-bit アプリと 64-bit アプリを共存させ、それぞれに対応した Oracle Client を利用することは可能なのか?」という疑問を持たれる方も多いかと思います。

そこで今回は、「Oracle Client 32-bit / 64-bit の共存」に関して最新環境での検証内容と、設定時の注意点について解説します。

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 Client のインストールと設定

今回は、サーバー側を Oracle Database 23ai の 64-bit、クライアント側に 21c の 32-bit と 64-bit の Oracle Client をインストールします。

最大の注意点は「32-bit と 64-bit でインストール先のディレクトリを分ける必要がある」ということです。同じ階層にインストールしないよう、明確にディレクトリを分けて設定してください。

Client インストール
Client インストール時
ディレクトリ

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 サンプルアプリでの動作検証

次に、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 実行
32-bit
64-bit 実行
64-bit

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 へのデータ転送について興味がある方は、こちらの記事も併せてご確認ください。


x instagram facebook youtube