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.dmp
、emp_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におけるデータ移行・バックアップにおいて非常に重要なツールです。特定テーブルのバックアップから高速化設定、スキーマ単位の移行まで幅広く対応可能です。
コマンドラインから柔軟に使えるため、日々の運用やシステム移行、テスト環境構築など、さまざまなシーンで活用できます。ぜひ目的に応じて、expdp
・impdp
を使いこなしてみてください。