【Oracle】Data Pumpでエクスポート時に圧縮する方法完全ガイド|compression=all・ライセンス確認・圧縮効果・parfileまで

【Oracle】Data Pumpでエクスポート時に圧縮する方法|compression=allの使い方 Oracle

Oracle の Data Pump(expdp)では、compression パラメータを使ってエクスポート時にダンプファイルを圧縮できます。大規模なデータベースのバックアップや移行では、ファイルサイズを大幅に削減でき、ストレージコストの節約・転送時間の短縮に直結します。

本記事では、compression=all をはじめとした各圧縮オプションの違い、ライセンスの注意点、圧縮効果の確認方法まで、実務で使える知識を体系的に解説します。

この記事でわかること

  • compression パラメータの4つの値(none/metadata_only/data_only/all)の違い
  • Advanced Compression オプションライセンスが必要な場合とそうでない場合
  • 圧縮効果の確認方法(ファイルサイズ比較・圧縮率の目安)
  • parfile(パラメータファイル)での指定方法
  • impdp でのインポート手順(特別な指定は不要)
  • 圧縮と並列処理(parallel)の組み合わせ
スポンサーリンク

compression パラメータの4つの値

compression パラメータで圧縮対象と必要なライセンスが変わります。

圧縮対象 必要なライセンス Oracle バージョン
none 圧縮しない(デフォルト) 不要
metadata_only メタデータ(DDL等)のみ圧縮 不要(Standard/Enterprise) 10g以降
data_only データ(行)のみ圧縮 Advanced Compression必須 11g以降
all メタデータ + データの両方を圧縮 Advanced Compression必須 11g以降
ライセンスに注意:data_only と all は Advanced Compression が必要
compression=data_only または compression=all を使用するには、Oracle Database Enterprise Edition + Advanced Compression Option ライセンスが必要です。Standard Edition では compression=metadata_only までしか使用できません。ライセンスを持っていない状態で使用すると、Oracle の利用規約違反になる場合があります。

ライセンスの確認方法

-- インストール済みオプションを確認
SELECT comp_name, status FROM dba_registry
WHERE comp_name LIKE '%Compress%';

-- Advanced Compression が有効かどうか
SELECT value FROM v$option
WHERE parameter = 'Advanced Compression';
結果の見方
v$optionAdvanced Compression の value が TRUE であれば、compression=all が使用できます。FALSE の場合は metadata_only のみ使用可能です。

基本構文:compression=all

expdp system/password \
  directory=DATA_PUMP_DIR \
  dumpfile=export_compressed.dmp \
  logfile=export_compressed.log \
  schemas=scott \
  compression=all
compression=all の効果
メタデータとデータの両方を圧縮します。一般的なデータベースで 60〜80% のファイルサイズ削減効果があります(データの内容や重複率によって異なります)。

各圧縮オプションの使い方

compression=metadata_only(ライセンス不要)

テーブル定義・インデックス定義などのメタデータ部分だけを圧縮します。Standard Edition でも使えるため、最も安全なオプションです。

expdp scott/tiger \
  directory=DATA_PUMP_DIR \
  dumpfile=meta_compressed.dmp \
  schemas=scott \
  compression=metadata_only
metadata_only の圧縮効果
メタデータはデータ量が少ないため、全体のファイルサイズへの影響は小さい(数%程度)です。しかし特別なライセンスなしで使え、インポート時の互換性も良いため、Standard Edition では有効な選択肢です。

compression=data_only

データ(行)のみを圧縮します。メタデータ(DDL)は圧縮しません。

expdp system/password \
  directory=DATA_PUMP_DIR \
  dumpfile=data_compressed.dmp \
  schemas=scott \
  compression=data_only

compression=all(最大圧縮)

メタデータとデータの両方を圧縮します。ファイルサイズを最大限に削減できます。

expdp scott/tiger \
  directory=DATA_PUMP_DIR \
  dumpfile=scott_comp.dmp \
  logfile=scott_comp.log \
  schemas=scott \
  compression=all

parfile(パラメータファイル)での指定

長いコマンドは parfile に記述することで管理しやすくなります。

-- exp_compress.par の内容
directory=DATA_PUMP_DIR
dumpfile=scott_comp.dmp
logfile=scott_comp.log
schemas=scott
compression=all
parallel=4
-- parfile を使った実行
expdp scott/tiger parfile=exp_compress.par

圧縮と parallel の組み合わせ

compression=allparallel を組み合わせると、圧縮しながら並列エクスポートができます。

expdp system/password \
  directory=DATA_PUMP_DIR \
  dumpfile=export_%U.dmp \
  logfile=export_par.log \
  schemas=scott \
  compression=all \
  parallel=4
parallel 使用時の注意点
parallel を指定する場合は dumpfile%U を使って複数ファイルに分割出力する形式にしてください。例:dumpfile=export_%U.dmp → export_01.dmp, export_02.dmp … として出力されます。

圧縮効果の確認方法

ファイルサイズで比較する

-- OS コマンドでファイルサイズを確認(Linux/Unix)
-- ls -lh $ORACLE_BASE/admin/XE/dpdump/

-- Oracleのディレクトリパス確認
SELECT directory_name, directory_path
FROM dba_directories
WHERE directory_name = 'DATA_PUMP_DIR';

ログファイルで圧縮率を確認

expdp のログファイルに圧縮前後のサイズが出力されます。

-- ログファイルの例(圧縮前と圧縮後のサイズが記録される)
-- Dump file set for SCOTT.SYS_EXPORT_SCHEMA_01 is:
--   /u01/oradata/dpdump/scott_comp.dmp
-- Job "SCOTT"."SYS_EXPORT_SCHEMA_01" successfully completed at ...
-- Bytes processed: 1,024,000,000
-- Compressed to: 256,000,000  (圧縮率: 75%)
圧縮率の目安
テキストデータが多い場合:70〜85%削減
数値データが多い場合:50〜70%削減
すでに圧縮済みのBLOBデータ:ほぼ圧縮効果なし
一般的なOLTPデータ:60〜80%削減

impdp でのインポート(特別な設定は不要)

圧縮されたダンプファイルのインポートには特別なオプションは不要です。impdp が自動的に圧縮を解凍します。

-- 通常のインポートコマンドでOK
impdp system/password \
  directory=DATA_PUMP_DIR \
  dumpfile=scott_comp.dmp \
  logfile=import_scott.log \
  schemas=scott \
  table_exists_action=replace
インポート先にAdvanced Compressionは不要
圧縮されたダンプファイルをインポートする場合、インポート先のDBに Advanced Compression ライセンスは必要ありません。エクスポート時にのみライセンスが必要です。

よくあるエラーと対処法

ORA-39173:圧縮に必要なライセンスがない

ORA-39173: Encrypted or compressed dump file formats require the
           Advanced Encryption or Compression option.

Advanced Compression ライセンスなしで compression=data_only または compression=all を使用した場合に発生します。

-- 対処: metadata_only に変更するか、Advanced Compression ライセンスを取得
expdp scott/tiger \
  directory=DATA_PUMP_DIR \
  dumpfile=export.dmp \
  schemas=scott \
  compression=metadata_only  -- Standard Edition でも使える

ORA-29339: 圧縮形式の不一致

古いバージョンの impdp で、新しいバージョンで圧縮されたダンプをインポートしようとした場合に発生します。

-- 対処: expdp 側で version パラメータを指定して互換性を確保
expdp scott/tiger \
  directory=DATA_PUMP_DIR \
  dumpfile=export.dmp \
  schemas=scott \
  compression=all \
  version=12.2

compression の選択ガイド

状況 推奨オプション 理由
Standard Editionを使用 metadata_only ライセンス不要
Enterprise Edition + Advanced Compressionあり all 最大圧縮効果
CPU負荷を抑えたい metadata_only データ圧縮はCPUを消費
ストレージコストを最優先 all 最大60〜80%削減
古いバージョンとの互換性 metadata_only バージョン間の互換性が高い

よくある質問

Q. compression=all を使うと必ずAdvanced Compressionライセンスが必要ですか?
A. はい、data_only または all を使う場合は、Oracle Database Enterprise Edition と Advanced Compression Option ライセンスの両方が必要です。metadata_only であれば Standard Edition でもライセンスなしで使用できます。
Q. 圧縮されたダンプをインポートする際にも Advanced Compression が必要ですか?
A. いいえ、不要です。圧縮の解凍(インポート)は Advanced Compression ライセンスなしでも実行できます。ライセンスが必要なのはエクスポート時(圧縮する側)だけです。
Q. 圧縮によってCPU負荷はどのくらい上がりますか?
A. compression=all では CPU 使用率が通常の1.2〜2倍程度増加することがあります。夜間バッチやバックアップ時間帯に実行する場合は許容範囲内ですが、業務時間中に実行する場合は metadata_only の方が安全です。
Q. BLOBデータを含むテーブルで compression=all の効果は?
A. JPEG・MP4・PDF など、すでに圧縮済みのバイナリデータに対しては圧縮効果がほとんどありません(場合によってはわずかにサイズが増えることも)。BLOB が中心のテーブルでは metadata_only の方が現実的です。
Q. impdp でインポートするとき、同じ compression の指定は必要ですか?
A. 不要です。impdp は圧縮されたダンプファイルを自動的に検出して解凍します。インポートコマンドには compression を指定しないのが通常の使い方です。

まとめ

Data Pump compression パラメータのポイント

  • metadata_only:Standard Edition でも使える。ライセン不要
  • data_only/all:Enterprise Edition + Advanced Compression が必要
  • 圧縮効果は一般的なデータで 60〜80% のサイズ削減
  • 圧縮されたダンプのインポートには特別な設定不要
  • CPU負荷を考慮して夜間バッチ・バックアップ時間帯に実行するのが安全

あわせて読みたい