【Oracle】Data Pumpの使い方まとめ|expdp/impdpの基本と実用例

【Oracle】Data Pumpの使い方まとめ|expdp/impdpの基本と実用例 Oracle

OracleのData Pumpは、高速かつ柔軟なデータ移行・バックアップ機能を提供するツールです。エクスポート(expdp)とインポート(impdp)を使うことで、テーブルやスキーマ単位でのデータのやりとりが効率的に行えます。本記事では、Data Pumpの基本的な使い方から、実用的なコマンド例までをまとめて紹介します。

Data Pumpとは?

Data Pump(データポンプ)は、Oracle 10g以降で利用可能なデータエクスポート・インポートユーティリティです。旧式のexp/impよりも高速で柔軟性があり、大規模データの移行にも適しています。

  • expdp:データのエクスポート(バックアップ)
  • impdp:データのインポート(リストア)

それぞれコマンドラインから実行可能で、パラメータを組み合わせることで、細かな条件指定や並列処理も可能です。

事前準備:ディレクトリオブジェクトの作成

Data Pumpを使うには、出力先となるディレクトリをOracleに認識させる必要があります。以下のSQLをSYSユーザーなどで実行してください。

CREATE DIRECTORY data_pump_dir AS '/u01/app/oracle/dump';
GRANT READ, WRITE ON DIRECTORY data_pump_dir TO scott;

CREATE DIRECTORY でOS上のパスを登録し、対象ユーザーにアクセス権を与えます。

expdpの基本的な使い方(エクスポート)

スキーマ全体をエクスポートする

expdp scott/tiger directory=data_pump_dir dumpfile=scott.dmp logfile=scott.log schemas=scott

特定のテーブルのみをエクスポートする

expdp scott/tiger directory=data_pump_dir dumpfile=emp.dmp logfile=emp.log tables=emp,dept

WHERE句で絞り込んでエクスポートする

expdp scott/tiger directory=data_pump_dir dumpfile=emp_filtered.dmp logfile=emp_filtered.log tables=emp query="WHERE deptno = 10"

並列処理で高速化する

expdp scott/tiger directory=data_pump_dir dumpfile=emp_%U.dmp logfile=emp.log tables=emp parallel=4

この場合、emp_01.dmpemp_02.dmp のように複数ファイルで出力されます。

impdpの基本的な使い方(インポート)

エクスポートファイルをそのまま復元する

impdp scott/tiger directory=data_pump_dir dumpfile=emp.dmp logfile=emp_import.log

特定テーブルのみインポートする

impdp scott/tiger directory=data_pump_dir dumpfile=scott.dmp logfile=imp.log tables=emp

テーブル名を変更してインポートする

impdp scott/tiger directory=data_pump_dir dumpfile=scott.dmp logfile=imp.log remap_table=emp:emp_backup

別スキーマにインポートする

impdp system/manager directory=data_pump_dir dumpfile=scott.dmp logfile=imp.log remap_schema=scott:john

既存テーブルの扱いを指定する(table_exists_action)

impdp scott/tiger directory=data_pump_dir dumpfile=emp.dmp logfile=imp.log table_exists_action=replace

以下の値が指定できます:

  • SKIP:既存テーブルがあれば無視(デフォルト)
  • APPEND:既存テーブルに追加挿入
  • REPLACE:既存テーブルを削除して再作成
  • TRUNCATE:既存テーブルを空にして再挿入

ログファイルとトラブル時の確認ポイント

すべての処理はlogfileに出力されるので、トラブル時はログファイルを確認することで原因が分かります。

よくあるエラー:

  • ORA-39002: invalid operation
  • ORA-31684: Object type TABLE:”TABLE名” already exists
  • ORA-39087: directory name DATA_PUMP_DIR is invalid

これらは主に権限不足や、ディレクトリ未定義、テーブルの重複が原因です。

まとめ

Data Pumpは、Oracleにおけるデータ移行・バックアップにおいて非常に重要なツールです。特定テーブルのバックアップから高速化設定、スキーマ単位の移行まで幅広く対応可能です。

コマンドラインから柔軟に使えるため、日々の運用やシステム移行、テスト環境構築など、さまざまなシーンで活用できます。ぜひ目的に応じて、expdpimpdpを使いこなしてみてください。