【Oracle】指定したテーブルのみリストアする方法

【Oracle】指定したテーブルのみリストアする方法 Oracle

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からリストア操作を行うことも可能です。以下の手順で操作します。

  1. SQL Developerを起動
  2. 接続先スキーマを右クリック → インポート → Data Pump → インポートを選択
  3. ダンプファイルや対象テーブル、リストア先を設定して実行

GUI操作に慣れている方やコマンドに不慣れな方には便利な方法です。

リストア前の注意点

  • 既存テーブルの有無を事前に確認しておく
  • REMAP_TABLEやTABLE_EXISTS_ACTIONを適切に指定する
  • 文字コードの不整合がないか確認する
  • 必要なディレクトリオブジェクトが作成済みか確認する

まとめ

Oracleで指定したテーブルだけを復元するには、Data Pump Import(impdp)が最も柔軟で実用的な方法です。REMAP_TABLEやREMAP_SCHEMA、TABLE_EXISTS_ACTIONなどのパラメータを活用すれば、既存データへの影響を最小限に抑えつつ、安全にインポートが可能です。必要に応じてGUIツールも併用し、目的に応じたリストアを行いましょう。