【Oracle】expdpオプション一覧|よく使うパラメータ早見表・parfile例

【Oracle】expdpオプション一覧|よく使うパラメータ早見表・parfile例 Oracle

expdp は、Oracle Data Pump Exportでデータやメタデータをダンプファイルに出力するコマンドです。使えるオプションは多いですが、実務でよく使うものはある程度決まっています。

この記事では、expdp のよく使うオプションを目的別に整理し、最小構成、スキーマ単位、テーブル単位、条件付きエクスポート、圧縮、並列化、除外指定、一貫性のあるバックアップ、parfile の書き方までまとめます。Data Pump全体の流れは、Data Pump(expdp / impdp)完全ガイドも参考にしてください。

先に結論: 迷ったら DIRECTORYDUMPFILELOGFILESCHEMAS または TABLES を基本にし、必要に応じて QUERYCOMPRESSIONPARALLELEXCLUDEFLASHBACK_TIME を足します。
スポンサーリンク

expdpオプション早見表

目的 主なオプション 使いどころ
出力先を指定する DIRECTORY DUMPFILE LOGFILE ほぼ必須。ダンプとログの置き場所を決める
対象を指定する FULL SCHEMAS TABLES TABLESPACES 全体、スキーマ、テーブル、表領域単位で出力する
行を絞る QUERY WHERE句で一部データだけ出力する
中身を切り替える CONTENT データのみ、定義のみ、両方を選ぶ
不要なものを除外する EXCLUDE INCLUDE インデックスや統計情報などを除外・限定する
容量を抑える COMPRESSION FILESIZE REUSE_DUMPFILES 圧縮、分割、既存ファイル上書きを制御する
高速化する PARALLEL %U 複数プロセスと複数ダンプファイルで並列出力する
一貫性を保つ FLASHBACK_TIME FLASHBACK_SCN 特定時点の状態でエクスポートする
互換性を指定する VERSION 下位バージョンへ持っていくときに指定する
実行管理する JOB_NAME STATUS ATTACH METRICS ジョブ名、進捗、再接続、処理量を確認する

expdpオプションをコマンドで確認する

手元のOracle環境で使える expdp オプションを確認したい場合は、まず help=y を実行します。バージョンやエディションにより使える指定が異なることがあるため、実機のヘルプ確認は地味ですが大切です。

expdp-help.cmd
expdp help=y

この記事では実務でよく使うものを中心に整理しています。細かいパラメータまで含めた最終確認は、必ず対象環境の help=y と検証実行で確認してください。

最小構成のexpdpコマンド

まずは、スキーマ単位でエクスポートする最小構成です。DIRECTORY はOracle側に作成済みのディレクトリオブジェクト名を指定します。

expdp-minimum.cmd
expdp app_user/password \
  DIRECTORY=DATA_PUMP_DIR \
  DUMPFILE=app_schema.dmp \
  LOGFILE=app_schema_exp.log \
  SCHEMAS=APP_USER

OSのパスを直接 DUMPFILE に書くのではなく、Oracleの DIRECTORY オブジェクト経由で指定する点が重要です。Data Pumpの基本構文やディレクトリ作成は、Data Pumpの使い方完全ガイドで整理しています。

DIRECTORYの作成と権限付与

DIRECTORY はOS上のディレクトリをOracleに登録したオブジェクトです。DBA権限を持つユーザーで作成し、実行ユーザーに読み書き権限を付与します。

create-directory.sql
CREATE OR REPLACE DIRECTORY DATA_PUMP_DIR AS '/u01/app/oracle/dpump';
GRANT READ, WRITE ON DIRECTORY DATA_PUMP_DIR TO APP_USER;

ORA-39087 やファイル作成エラーが出る場合は、Oracle側のディレクトリオブジェクト、OS側の実ディレクトリ、Oracle実行ユーザーのOS権限、DBユーザーへの READ / WRITE 付与を確認します。

出力先を指定するオプション

オプション 意味
DIRECTORY ダンプファイルを置くOracleディレクトリオブジェクト DIRECTORY=DATA_PUMP_DIR
DUMPFILE 出力するダンプファイル名 DUMPFILE=app_%U.dmp
LOGFILE 実行ログのファイル名 LOGFILE=app_exp.log
NOLOGFILE ログファイルを作成しない NOLOGFILE=YES
REUSE_DUMPFILES 既存ダンプファイルの上書きを許可する REUSE_DUMPFILES=YES

REUSE_DUMPFILES=YES は便利ですが、既存バックアップを誤って上書きする危険があります。定期実行では日付付きファイル名や世代管理を優先するほうが安全です。

ダンプサイズを見積もるオプション

エクスポート前におおよその容量を見たい場合は、ESTIMATE_ONLY を使います。本番環境で容量不足を避けたいときや、転送時間を見積もりたいときに便利です。

expdp-estimate-only.cmd
expdp app_user/password \
  DIRECTORY=DATA_PUMP_DIR \
  SCHEMAS=APP_USER \
  ESTIMATE_ONLY=YES \
  ESTIMATE=BLOCKS

ESTIMATE=BLOCKS はブロック情報から見積もります。実際のダンプサイズは圧縮、LOB、断片化、対象データの内容で変わるため、正確な値ではなく目安として扱います。

対象を指定するオプション

expdp は、どの単位で出力するかを最初に決めます。よく使うのは SCHEMASTABLES です。

オプション 対象 注意点
FULL=Y データベース全体 権限と容量に注意。全体移行向け
SCHEMAS=APP スキーマ単位 アプリ単位の移行・バックアップで使いやすい
TABLES=APP.ORDERS テーブル単位 一部テーブルだけバックアップしたいときに使う
TABLESPACES=USERS 表領域単位 表領域設計に沿った移行で使う
expdp-tables.cmd
expdp app_user/password \
  DIRECTORY=DATA_PUMP_DIR \
  DUMPFILE=orders_%U.dmp \
  LOGFILE=orders_exp.log \
  TABLES=APP.ORDERS,APP.ORDER_ITEMS

複数テーブルの指定や parfile を使った管理は、Data Pumpで複数テーブルをまとめてエクスポートする方法も参考になります。

parfileでオプションを管理する

オプションが増えると、コマンドラインに直接書くより parfile に分けたほうが安全です。クォートが絡む QUERY や、複数行の設定を管理しやすくなります。

app_export.par
userid=app_user/password
directory=DATA_PUMP_DIR
dumpfile=app_%U.dmp
logfile=app_exp.log
schemas=APP_USER
parallel=4
compression=all
metrics=yes
run-parfile.cmd
expdp parfile=app_export.par

パスワードを平文で置く運用にできない場合は、実行ユーザー、OS認証、Oracle Walletなどの接続方式も検討します。パスワードレス接続は、Oracle Wallet(SEPS)完全ガイドの考え方が近いです。

QUERYで一部データだけエクスポートする

QUERY を使うと、WHERE句で行を絞ってエクスポートできます。本番から検証環境へ直近データだけ移す、特定部門のデータだけ出す、といった場面で使います。

query-export.par
userid=app_user/password
directory=DATA_PUMP_DIR
dumpfile=orders_recent.dmp
logfile=orders_recent_exp.log
tables=APP.ORDERS
query=APP.ORDERS:"WHERE ORDER_DATE >= DATE '2026-01-01'"

QUERY はシェルやコマンドプロンプトのクォートで詰まりやすいので、複雑な条件では parfile に寄せるのが無難です。詳しい書き方は、expdpでWHERE句(queryパラメータ)を使う方法で解説しています。

CONTENTでデータのみ・定義のみを切り替える

CONTENT は、エクスポートする中身を切り替えるオプションです。

指定 出力内容 使いどころ
CONTENT=ALL 定義とデータ 通常のバックアップ・移行
CONTENT=DATA_ONLY データのみ 表定義は移行先にある場合
CONTENT=METADATA_ONLY 定義のみ DDL相当を別環境に作りたい場合
metadata-only.cmd
expdp app_user/password \
  DIRECTORY=DATA_PUMP_DIR \
  DUMPFILE=app_metadata.dmp \
  LOGFILE=app_metadata_exp.log \
  SCHEMAS=APP_USER \
  CONTENT=METADATA_ONLY

インポート側でデータだけ入れる場合は impdp CONTENT=DATA_ONLYtable_exists_action の扱いが重要です。impdpでデータだけをインポートする方法もあわせて確認してください。

COMPRESSIONでダンプサイズを小さくする

COMPRESSION は、ダンプファイルのサイズを抑えるためのオプションです。利用できる値やライセンス条件は環境により確認が必要です。

指定 意味 注意点
COMPRESSION=METADATA_ONLY メタデータを圧縮 標準的に使いやすい
COMPRESSION=DATA_ONLY データを圧縮 環境条件を確認する
COMPRESSION=ALL メタデータとデータを圧縮 容量削減に有効だがCPU負荷も見る
COMPRESSION=NONE 圧縮しない 速度優先や検証で使う
expdp-compression.cmd
expdp app_user/password \
  DIRECTORY=DATA_PUMP_DIR \
  DUMPFILE=app_compressed_%U.dmp \
  LOGFILE=app_compressed_exp.log \
  SCHEMAS=APP_USER \
  COMPRESSION=ALL

圧縮の効果、ライセンス確認、parfile 例は、Data Pumpでエクスポート時に圧縮する方法で詳しく扱っています。

FILESIZEでダンプファイルを分割する

大きなダンプを1ファイルにしたくない場合は、FILESIZE%U を組み合わせます。ファイル転送や保管先の制限がある環境では、分割しておくと扱いやすくなります。

expdp-filesize.cmd
expdp app_user/password \
  DIRECTORY=DATA_PUMP_DIR \
  DUMPFILE=app_%U.dmp \
  LOGFILE=app_filesize_exp.log \
  SCHEMAS=APP_USER \
  FILESIZE=2G

DUMPFILE=app_%U.dmp%U は連番ファイルを作るための置換文字です。FILESIZE だけを指定しても、ファイル名側に %U がないと分割運用で詰まりやすくなります。

PARALLELと%Uで高速化する

PARALLEL はData Pumpジョブを並列化するオプションです。複数のダンプファイルに分けるため、DUMPFILE には %U を入れるのが基本です。

expdp-parallel.cmd
expdp app_user/password \
  DIRECTORY=DATA_PUMP_DIR \
  DUMPFILE=app_%U.dmp \
  LOGFILE=app_parallel_exp.log \
  SCHEMAS=APP_USER \
  PARALLEL=4

PARALLEL を上げれば必ず速くなるわけではありません。CPU、I/O、ネットワーク、対象表の構造、ダンプファイルの置き場所がボトルネックになります。詳しくは、Data Pumpのパラレル処理で高速化する方法を参照してください。

EXCLUDE・INCLUDEで対象を調整する

EXCLUDE は不要なオブジェクトを除外し、INCLUDE は必要なオブジェクトだけに限定します。両方を雑に組み合わせると意図しない結果になりやすいため、まずはどちらか一方で設計します。

expdp-exclude-index.cmd
expdp app_user/password \
  DIRECTORY=DATA_PUMP_DIR \
  DUMPFILE=app_no_index.dmp \
  LOGFILE=app_no_index_exp.log \
  SCHEMAS=APP_USER \
  EXCLUDE=INDEX

インデックスを除外して後から再作成する運用は、移行時間や領域使用量を調整したいときに使います。Data Pumpでインデックスを除外する方法もあわせて確認してください。

FLASHBACK_TIMEで一貫性のあるエクスポートを取る

稼働中のDBからエクスポートする場合、処理中にデータが更新されることがあります。特定時点の一貫した状態で取りたい場合は FLASHBACK_TIME または FLASHBACK_SCN を検討します。

expdp-flashback-time.cmd
expdp app_user/password \
  DIRECTORY=DATA_PUMP_DIR \
  DUMPFILE=app_flashback.dmp \
  LOGFILE=app_flashback_exp.log \
  SCHEMAS=APP_USER \
  FLASHBACK_TIME="SYSTIMESTAMP"

長時間のエクスポートではUNDO保持期間にも注意します。一貫性を優先するのか、停止時間を確保して確実に取るのかは、データ量と業務要件で決めます。

VERSIONで移行先バージョンを指定する

下位バージョンのOracleへ持っていく場合は、VERSION を指定することがあります。ただし、上位バージョンでしか使えない型や機能を下位へ完全に移せるわけではありません。

expdp-version.cmd
expdp app_user/password \
  DIRECTORY=DATA_PUMP_DIR \
  DUMPFILE=app_19c.dmp \
  LOGFILE=app_19c_exp.log \
  SCHEMAS=APP_USER \
  VERSION=19

バージョン差がある移行では、事前に検証環境で impdp まで通すことが大切です。バージョンが違うDBでData Pumpを使うときの注意点も参考になります。

実務で使いやすいparfileテンプレート

日常運用では、次のように目的を明確にした parfile を用意しておくと再利用しやすくなります。

schema-backup.par
userid=app_user/password
directory=DATA_PUMP_DIR
dumpfile=app_user_%U.dmp
logfile=app_user_exp.log
schemas=APP_USER
parallel=4
compression=all
flashback_time=SYSTIMESTAMP
metrics=yes
status=60

STATUS=60 を付けると、60秒ごとに進捗が表示されます。長時間ジョブでは JOB_NAME も付けておくと、切断後に ATTACH しやすくなります。

job-management.par
userid=app_user/password
directory=DATA_PUMP_DIR
dumpfile=app_job_%U.dmp
logfile=app_job_exp.log
schemas=APP_USER
job_name=EXP_APP_USER_01
status=30
metrics=yes

ジョブの一時停止、再開、強制停止、残存ジョブの確認は、Data Pumpジョブの一時停止・再開・強制停止で詳しくまとめています。

よくある失敗パターン

症状 原因 確認ポイント
ダンプファイルを作れない DIRECTORY の権限不足、OSディレクトリ不備 READ / WRITE 権限と実パスを確認
複数ファイルにならない PARALLEL だけ指定して %U がない DUMPFILE=app_%U.dmp にする
QUERYでエラーになる クォートの解釈違い parfile に分ける
圧縮しても遅い CPUやI/Oが詰まっている 圧縮率だけでなく処理時間も比較する
移行先でインポートできない バージョン差、文字コード、オブジェクト既存 VERSIONimpdp 側オプションを確認

関連ページ

よくある質問

expdpで最低限必要なオプションは何ですか?

基本は DIRECTORYDUMPFILELOGFILESCHEMAS または TABLES です。対象や用途に応じて追加します。

expdpのオプション一覧を確認するコマンドはありますか?

expdp help=y で、その環境のヘルプを確認できます。バージョン差があるため、実際に使うDB環境で確認するのが確実です。

DIRECTORYにはOSのパスを直接指定できますか?

直接は指定しません。CREATE DIRECTORY でOracleディレクトリオブジェクトを作成し、DIRECTORY=DATA_PUMP_DIR のようにオブジェクト名を指定します。

expdpの実行前に容量を見積もれますか?

ESTIMATE_ONLY=YES を使うと見積もりだけ実行できます。ただし圧縮やデータ内容によって実サイズは変わるため、あくまで目安です。

expdpのオプションはコマンドラインとparfileのどちらに書くべきですか?

短いコマンドなら直接指定で十分ですが、実務では parfile が安全です。QUERY、複数テーブル、除外条件、並列化などを管理しやすくなります。

expdpで一部データだけ出力できますか?

できます。QUERY オプションでWHERE句を指定します。クォートが複雑になりやすいため、parfile に書く方法がおすすめです。

expdpを高速化するには何を指定しますか?

PARALLELDUMPFILE=%U を組み合わせます。ただし、CPU、I/O、ネットワーク、ストレージ性能が足りないと効果は限定的です。

expdpで圧縮するにはどのオプションを使いますか?

COMPRESSION を使います。COMPRESSION=ALLCOMPRESSION=DATA_ONLYCOMPRESSION=METADATA_ONLY などを環境に応じて選びます。

expdpでインデックスを除外できますか?

できます。例として EXCLUDE=INDEX を指定します。移行後にインデックスを作り直す運用では、時間と領域の見積もりも必要です。

まとめ

expdp のオプションは多いですが、まずは出力先、対象、絞り込み、容量、速度、一貫性の6つに分けて考えると整理しやすくなります。基本は DIRECTORYDUMPFILELOGFILESCHEMAS または TABLES です。

実務では、コマンドを長くするより parfile にまとめるほうが再利用しやすく、ミスも減らせます。特に QUERYPARALLELCOMPRESSIONEXCLUDEFLASHBACK_TIME を使う場合は、事前に検証環境でリストアまで確認しましょう。