【Oracle】別サーバーへデータベースを移行する方法|Data Pumpとリモート接続

【Oracle】別サーバーへデータベースを移行する方法|Data Pumpとリモート接続 Oracle

Oracleデータベースの移行は、バージョンアップや環境切り替え時に欠かせない作業です。特に、別サーバーへの移行では、Data Pump(expdp/impdp)を使ったリモート接続による移行方法がよく採用されます。

この記事では、OracleのData Pumpを活用して、本番環境や開発環境のデータベースを別サーバーへ効率的に移行する手順を解説します。

移行前の準備

まず、ソースサーバーとターゲットサーバーの環境を確認し、以下の準備を行います。

  • Oracleのバージョンが互換性を保っていること
  • ターゲット側に同一のスキーマや表領域があること
  • リモート接続が可能であること(TNS設定など)
  • ディレクトリオブジェクトが作成されていること

ソースサーバーでのエクスポート(expdp)

Data Pumpのexpdpコマンドで、エクスポート用のダンプファイルを作成します。以下はスキーマ単位でのエクスポート例です。

expdp system/password schemas=HR directory=DATA_PUMP_DIR dumpfile=hr.dmp logfile=hr_exp.log

複数スキーマや表単位、条件付きエクスポートも可能です。

ダンプファイルの転送

作成したダンプファイルを、SCPやFTPを使ってターゲットサーバーへ転送します。ターゲット側にもDATA_PUMP_DIRのようなディレクトリオブジェクトをあらかじめ用意しておく必要があります。

scp /u01/app/oracle/admin/DBNAME/dpdump/hr.dmp oracle@target_host:/u01/app/oracle/admin/DBNAME/dpdump/

ターゲットサーバーでのインポート(impdp)

ダンプファイルをインポートするには、ターゲットサーバーでimpdpコマンドを使用します。

impdp system/password schemas=HR directory=DATA_PUMP_DIR dumpfile=hr.dmp logfile=hr_imp.log remap_tablespace=HR_DATA:NEW_DATA

remap_tablespaceオプションを使えば、表領域名の変更にも対応できます。

リモート接続で直接移行する方法(network_link)

ダンプファイルを経由せず、ソース→ターゲットへネットワーク経由で直接インポートする方法もあります。

ターゲット側でDBリンクを作成

CREATE DATABASE LINK src_link
CONNECT TO system IDENTIFIED BY password
USING 'SRC_TNS';

impdpでnetwork_linkを使用

impdp system/password network_link=src_link schemas=HR logfile=impdp_network.log

この方法では、ターゲット側でダンプファイルを経由せずに直接データが移行されます。ただし、ネットワーク状態に左右されるため、安定した環境が必要です。

よくあるオプションと注意点

Data Pump移行時には以下のオプションを必要に応じて追加します。

  • remap_schema:スキーマ名を変更してインポート
  • transform=segment_attributes:n:セグメント属性を引き継がない
  • exclude=statistics:統計情報を除外

また、移行後は次のような確認作業も行いましょう。

  • ユーザーと権限が正しく設定されているか
  • シノニムやトリガーなどが正常にインポートされているか
  • アプリケーションが想定通りに動作するか

まとめ

Oracleデータベースを別サーバーへ移行するには、Data Pump(expdp/impdp)を活用した以下の方法が有効です。

  • ダンプファイルを作成・転送してインポートする手順
  • network_linkによるダイレクト移行

いずれの方法も、事前の環境準備と移行後の検証をしっかり行うことが成功の鍵となります。開発環境や本番環境での移行計画に、ぜひ本記事を参考にしてみてください。