「夜間バックアップが業務開始時間までに終わらない」「expdpが遅くて困っている」――Oracleのバックアップ高速化は、DBAが必ず直面する課題です。
この記事では、Data Pump(expdp)とRMANそれぞれの高速化テクニックを、実際に使えるコマンドとともに体系的に解説します。ボトルネックの特定方法・圧縮アルゴリズムの選び方・増分バックアップの設計まで、実務で役立つ内容を網羅します。
この記事で学べること
- バックアップが遅い原因の特定方法(V$SESSION_LONGOPS / V$RMAN_STATUS)
- Data Pump(expdp)の高速化:PARALLEL・圧縮・DIRECT_PATH・EXCLUDE
- RMANの高速化:複数チャネル・PARALLELISM・圧縮アルゴリズム比較
- 増分バックアップ(Level 0/1)の設計と Block Change Tracking の活用
- SECTION SIZE でラージファイルを並列処理する方法
- BACKUP DURATION・RATE で業務影響を最小化する方法
まずボトルネックを特定する
闇雲にオプションを変えても効果は限定的です。まず何がボトルネックかを特定してから対処しましょう。
V$SESSION_LONGOPSで進捗・残り時間を確認
V$RMAN_STATUSで過去のバックアップ実績を確認
| ボトルネック | 症状 | 有効な対処 |
|---|---|---|
| ディスクI/O | CPU使用率は低いのに遅い | 並列チャネル数を増やす・高速ストレージに変更 |
| CPU | CPU使用率が100%に張り付く | 圧縮レベルを下げる・並列数を下げる |
| データ量 | 対象データが多すぎる | 増分バックアップ・不要データの除外 |
| ネットワーク | network_link使用時に遅い | ローカル接続に変更・帯域を確保 |
Data Pump(expdp)の高速化テクニック
① PARALLEL:並列ワーカーで最も効果的な高速化
parallel オプションは Data Pump高速化の最重要オプションです。指定した数のワーカープロセスが同時にエクスポートを実行します。ファイル名に %U を含めることで複数ファイルに自動分割されます。
注意:parallel はOracle Enterprise Edition + Data Pump機能ライセンスが必要です。また並列数はCPUコア数を超えても効果が薄れます。まず CPU コア数の半分程度から試してください。
② COMPRESSION:転送量を削減して速度と容量を両立
圧縮を有効にすると出力ファイルサイズが小さくなり、I/O時間が短縮されます。CPUとのトレードオフですが、I/Oがボトルネックの環境では有効です。
| COMPRESSIONの値 | 対象 | 圧縮率 | CPU負荷 |
|---|---|---|---|
NONE |
なし | なし | 最低(CPU優先環境) |
METADATA_ONLY |
メタデータのみ | 小 | 低(デフォルト) |
DATA_ONLY |
データのみ(要Advanced Compression) | 大 | 中 |
ALL |
メタデータ+データ(要Advanced Compression) | 最大 | 高(I/O優先環境) |
③ ACCESS_METHOD=DIRECT_PATH:バッファキャッシュを迂回して高速読み込み
Direct Pathモードではバッファキャッシュを経由せずにディスクから直接データを読み込みます。大量データのエクスポートでは通常モードより高速になります。
補足:Data Pumpはデフォルトで可能な場合はDirect Pathを自動選択します。ビュー・マテリアライズドビュー・パーティション化された特定の構成などではExternal Tableモードにフォールバックされます。access_method=external_table で強制指定することも可能です。
④ EXCLUDE / CONTENT でエクスポート量を削減する
インデックス・統計情報・LOBなど不要なオブジェクト種別を除外するとデータ量が減少し、速度が上がります。
RMANバックアップの高速化テクニック
① 複数チャネルで並列バックアップ
RMANで最も直接的な高速化手法です。ALLOCATE CHANNEL を複数定義することで、複数ファイルを同時に処理します。
CONFIGURE PARALLELISM でデフォルト並列数を設定する
毎回 ALLOCATE CHANNEL を書く代わりに、CONFIGURE でデフォルトの並列数を設定しておくとスクリプトがシンプルになります。
② 圧縮アルゴリズムの選択(速度と圧縮率のバランス)
RMANの圧縮はアルゴリズムを指定できます。I/Oがボトルネックなら圧縮率を上げ、CPUがボトルネックなら圧縮を外すのが基本です。
| アルゴリズム | 圧縮率 | 速度 | CPU負荷 | ライセンス |
|---|---|---|---|---|
BASIC |
中 | 中 | 中 | 標準 |
LOW |
低 | 最速 | 低 | Advanced Compression |
MEDIUM |
高 | 中 | 中 | Advanced Compression |
HIGH |
最高 | 低 | 高 | Advanced Compression |
③ 増分バックアップ(Incremental Backup)でデータ量を削減
毎回フルバックアップを取るのではなく、変更があったブロックだけをバックアップする増分方式は、バックアップ時間を大幅に短縮します。
| 種別 | 対象ブロック | 推奨頻度 |
|---|---|---|
| Level 0 | 使用済みブロック全体(フルバックアップと同等) | 週1回(日曜) |
| Level 1 | 前回Level 0/1以降に変更されたブロックのみ | 日次(月〜土) |
④ Block Change Tracking で増分バックアップをさらに高速化
通常の増分バックアップでは変更ブロックを探すためにDBをスキャンします。Block Change Tracking(BCT) を有効にすると、変更ブロックの位置を専用ファイルに記録し、スキャンが不要になるため増分バックアップが劇的に速くなります。
効果:BCTを有効にすると増分バックアップのスキャン時間が大幅に短縮されます。大規模DBでLevel 1バックアップを頻繁に取る環境では特に効果的です。BCTファイルはI/O負荷が低いストレージに配置してください。
⑤ SECTION SIZE でラージファイルを並列処理
1つの大きなデータファイルを複数チャネルで並列処理するには SECTION SIZE を使います。ファイル単位ではなくセクション単位で分割処理できます。
⑥ BACKUP DURATION で業務時間帯の負荷を制御
業務中にバックアップが走る場合、BACKUP DURATION と MINIMIZE LOAD でバックアップの最大所要時間を指定しつつI/O負荷を抑えられます。
高速化テクニック一覧
| テクニック | ツール | 効果 | ライセンス |
|---|---|---|---|
| PARALLEL | Data Pump | ★★★(最大の効果) | EE必須 |
| COMPRESSION=ALL | Data Pump | ★★(I/Oボトルネック時) | Advanced Compression |
| DIRECT_PATH | Data Pump | ★★ | 標準 |
| EXCLUDE / CONTENT | Data Pump | ★(対象データ削減) | 標準 |
| 複数チャネル / PARALLELISM | RMAN | ★★★ | 標準 |
| 増分バックアップ(Level 1) | RMAN | ★★★(日次時間削減) | 標準 |
| Block Change Tracking | RMAN | ★★★(増分と組み合わせ) | EE必須 |
| SECTION SIZE | RMAN | ★★(大容量ファイル向け) | 標準 |
まとめ
バックアップ高速化で最初に試すべきは、Data Pumpなら parallel、RMANなら複数チャネルと増分バックアップです。これだけで多くの環境で劇的な改善が見込めます。
次に、I/Oがボトルネックなら圧縮を加え、CPUがボトルネックなら圧縮レベルを下げるかオフにします。大規模DB環境ではBlock Change Trackingの有効化と増分バックアップの組み合わせが、日次バックアップ時間を大幅に短縮する最も効果的な手法です。

