Oracleデータベースでは、バックアップファイル(.dmp)から特定のテーブルだけをリストア(復元)することが可能です。全体をリストアせず、必要なテーブルのみを復元できるため、検証環境や一部復旧などに非常に便利です。本記事では、Data Pump Import(impdp) を使って特定テーブルだけをリストアする方法を詳しく解説します。
Data Pump Import(impdp)を使った基本的なリストア方法
Data Pump Import(impdp)は、Oracle 10g以降で利用できる高速なインポートツールです。指定したテーブルのみを対象にインポートすることができます。
基本構文:
impdp ユーザー名/パスワード directory=ディレクトリ名 dumpfile=ファイル名.dmp logfile=ログファイル名.log tables=スキーマ名.テーブル名
使用例:
impdp scott/tiger directory=DATA_PUMP_DIR dumpfile=emp_backup.dmp logfile=emp_restore.log tables=scott.emp
このコマンドは、「emp_backup.dmp」に含まれる「scott.emp」テーブルのみをリストアします。
別名でテーブルを復元する方法(REMAP_TABLE)
同名テーブルがすでに存在している場合や、別名で復元したい場合は、REMAP_TABLE
パラメータを使います。
impdp scott/tiger directory=DATA_PUMP_DIR dumpfile=emp_backup.dmp logfile=emp_restore.log tables=scott.emp remap_table=emp:emp_restore
この例では、「emp」テーブルのデータを「emp_restore」という新しい名前のテーブルとしてインポートします。
既存テーブルがある場合の処理指定(TABLE_EXISTS_ACTION)
すでに同名のテーブルが存在する場合、どう扱うかを制御するのがTABLE_EXISTS_ACTION
パラメータです。
値 | 動作内容 |
---|---|
SKIP | 既存テーブルがあればスキップ(デフォルト) |
APPEND | 既存テーブルにデータを追加挿入 |
REPLACE | 既存テーブルを削除して再作成 |
TRUNCATE | テーブルを空にしてからデータを挿入 |
例:データを追加入力する場合
impdp scott/tiger directory=DATA_PUMP_DIR dumpfile=emp_backup.dmp tables=scott.emp table_exists_action=append
他のスキーマにリストアする方法(REMAP_SCHEMA)
バックアップ元とは異なるスキーマにテーブルを復元するには、REMAP_SCHEMA
を使用します。
impdp system/manager directory=DATA_PUMP_DIR dumpfile=emp_backup.dmp logfile=emp_restore.log tables=scott.emp remap_schema=scott:john
この例では、SCOTTスキーマの「emp」テーブルを、JOHNスキーマに復元します。
SQL Developerを使ってGUIでリストアする方法
Oracle SQL Developerを使えば、GUIからリストア操作を行うことも可能です。以下の手順で操作します。
- SQL Developerを起動
- 接続先スキーマを右クリック → インポート → Data Pump → インポートを選択
- ダンプファイルや対象テーブル、リストア先を設定して実行
GUI操作に慣れている方やコマンドに不慣れな方には便利な方法です。
リストア前の注意点
- 既存テーブルの有無を事前に確認しておく
- REMAP_TABLEやTABLE_EXISTS_ACTIONを適切に指定する
- 文字コードの不整合がないか確認する
- 必要なディレクトリオブジェクトが作成済みか確認する
まとめ
Oracleで指定したテーブルだけを復元するには、Data Pump Import(impdp)が最も柔軟で実用的な方法です。REMAP_TABLEやREMAP_SCHEMA、TABLE_EXISTS_ACTIONなどのパラメータを活用すれば、既存データへの影響を最小限に抑えつつ、安全にインポートが可能です。必要に応じてGUIツールも併用し、目的に応じたリストアを行いましょう。