※アフィリエイト広告を利用しています。

【Dr.Sum】Oracle12cから19cにバージョンアップ。確実に動くOCI8の接続手順

MotionBoard

はじめに

Oracleバージョンアップに伴いOracleをOCI8接続で仮想テーブルで参照しており、19cも完全にサポートしているであろうOracle Instant Client 19に移行しました。その時の手順を公開します。

前提条件

バージョンアップ時の前提は、以下のとおりです。

  • 12c(旧サーバ)、19c(新サーバ)の並行稼働が一定期間必要なため、Dr.Sumの仮想テーブルの参照において、両方のバージョンからの動作が保証されること
  • Dr.SumのOSはWindowsServer(2019)であること
  • 現在利用中の12cクライアントがDr.SumのOSで共存している
  • 筆者のようにとりあえず理由はわからないが動けばいいと考えていること

作業手順

Oracle Instant Client 19のインストール

公式サイトよりインストーラーをダウンロードします。Basic PackageにOCI8関連のファイルは含まれてそうですが、ここら辺の仕組みが筆者は正直よくわからない部分でしたので、いるかいらないか不明ですがODBC Packageもあわせてダウンロードしました。

インストール手順について、詳しくはこちらのブログに詳細に書かれておりましたので、参考にしてみてください。筆者も大変助かりました。

環境変数の設定

以下3つの変数を設定します。

  • TNS_ADMIN:Oracel Instant Clientをインストールしたフォルダ(後述するtnsnames.oraが含まれていること)
  • PATH:Oracel Instant Clientをインストールしたフォルダ(後述するtnsnames.oraが含まれていること)
  • NLS_LANG:JAPANESE_JAPAN.JA16SJISTILDE

手順は上記リンクのブログサイトと同じですが、バージョンアップ時の対応で1点だけ注意すべき点は、PATHはOracle Instant Client19を12cクライアントよりも上に設定するようにしてください。

上から順に変数を見ていくようですので、12cクライアントより上にあれば、19を使って接続するようになります。

tnsnames.oraのファイルの編集

19c環境と12c環境の接続情報を記入します。12cクライアントのtnsnames.oraファイルに19cで使うホスト名およびスキーマ(ユーザ)定義を追記し、19クライアントの配下に配置するのが並行稼働させるにおいては手っ取り早いです。

サーバを再起動

Oracel Instant Clientのインストール結果をDr.Sumに読み込ませるためにサーバを再起動します。

この作業後、管理コンソールから19c、12c環境どちらからもOCI8接続できれば設定は完了です。

OCI8定義したデータソースの移行について

筆者の場合は、リスク分散のため以下のような移行を行いました。

  • メタデータのみ新Oracleサーバに環境構築・Dr.SumのOCI8の設定追加
  • 新環境へデータ移行までの期間は旧環境のテーブルを仮想テーブルとして参照
  • 新環境へデータ移行後は新環境のテーブルを仮想テーブルとして参照

上記のプロセスを取る場合、tnsnames.oraファイルの接続識別子の定義について、ホスト名以下の新環境の定義を変更すれば良いです。

(例)データ移行前

tnsnew =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = test1)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = OCI81)
      (SERVICE_NAME = OCI81)
    )
  )
tnsold =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = newtest2)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = NEWOCI81)
      (SERVICE_NAME = NEWOCI81)
    )
  )

(例)データ移行後

tnsnew =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = newtest2)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = NEWOCI81)
      (SERVICE_NAME = NEWOCI81)
    )
  )
tnsold =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = test1)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = OCI81)
      (SERVICE_NAME = OCI81)
    )
  )

サーバ再起動不要であり、即時に反映されました一番懸念していた仮想テーブルの全再作成は不要でした。

まとめ

以上で、『【Dr.Sum】Oracle12cから19cにバージョンアップ。確実に動くOCI8の接続手順』でした。

思ったより簡単にOracleクライアントの移行ができましたので、サーバ移行時の参考にしてください。

タイトルとURLをコピーしました