Oracle Database の運用において、バックアップ時間の短縮とストレージ容量の節約は共通の課題です。Oracle 差分増分バックアップ(Incremental Backup)は、前回のバックアップ以降に変更されたデータブロックのみを抽出する効率的な手法です。
本記事では、初心者から中級者向けに、増分バックアップの論理的なイメージ図、RMAN(Recovery Manager)での具体的な実行手順、累積増分との違いを網羅して解説します。
💰 【PR】Oracleエンジニアの市場価値、調べてみませんか?
Oracleのスキルは需要が高く、特定の資格や経験を持っていると年収が大幅にアップするケースがあります。まずはIT専門のエージェントで非公開求人をチェックしてみませんか?
結論:増分バックアップでやるべきことリスト
効率的なバックアップ運用を実現するための最短ステップは以下の通りです。
- レベル0バックアップを取得する:すべての増分バックアップの起点(親)となる全体バックアップです。
- レベル1バックアップを定期実行する:日次の変更分のみをバックアップし、時間と容量を節約します。
- ブロック・チェンジ・トラッキングを検討する:増分読み取りを高速化する EE 向けオプション機能です。
- リカバリ検証を行う:
RESTORE DATABASE VALIDATEでバックアップが有効か確認します。
背景と基礎:増分バックアップとは?
Oracle の増分バックアップとは、データファイルを丸ごとコピーするのではなく、**「前回のバックアップから変更があったデータブロック」**だけを抽出する機能です。
一口メモ:レベル0とレベル1
Oracle RMAN では、増分の基点を「レベル0」、それ以降の変更分を「レベル1」と呼びます。レベル0がない状態でレベル1を実行すると、自動的に全体分がバックアップされます。
【図解】差分増分と累積増分のイメージ
「いつからの変更分を持つか」という点が最大の違いです。
1. 差分増分バックアップ (Differential)
直近のレベル0またはレベル1以降の変更分のみを取得します。
【差分増分のイメージ】
月曜 [Lv0] : 全データ
火曜 [Lv1] : 月曜からの変更分 (D1)
水曜 [Lv1] : 火曜からの変更分 (D2)
木曜 [Lv1] : 水曜からの変更分 (D3)
リカバリ時:[Lv0] + [D1] + [D2] + [D3] すべて必要
⇒ メリット:毎日のバックアップ時間が最小。
2. 累積増分バックアップ (Cumulative)
直近のレベル0以降の「すべての変更分」を毎回取得します。
【累積増分のイメージ】
月曜 [Lv0] : 全データ
火曜 [Lv1] : 月曜からの変更分 (C1)
水曜 [Lv1] : 月曜からの変更分 (C2)
木曜 [Lv1] : 月曜からの変更分 (C3)
リカバリ時:[Lv0] + [C3] (最新の1個) だけでOK
⇒ メリット:リカバリが早くてシンプル。
手順・実装:RMAN によるバックアップ実行
増分バックアップを実行するには、RMAN(Recovery Manager)を使用します。
前提条件
- 権限:
SYSDBAまたはSYSBACKUP権限。 - モード:ARCHIVELOG モード推奨。
- CDB/PDB:CDB$ROOT に接続して実行することで全コンテナを対象にできます。
1. レベル0(基点)の取得
まず、増分運用の「親」となるバックアップを取得します。
-- すべてのデータブロックをバックアップし、増分の基点を作成します
RMAN> BACKUP INCREMENTAL LEVEL 0 DATABASE;
2. レベル1(差分増分)の取得
日次の運用では、デフォルトの「差分増分」を実行します。
-- 直前のレベル0または1以降の変更分のみを取得します
RMAN> BACKUP INCREMENTAL LEVEL 1 DATABASE;
3. 累積増分バックアップの取得
リカバリ作業を簡略化したい場合は、累積(CUMULATIVE)を指定します。
-- 直前のレベル0以降の「すべての変更」をまとめて取得します
RMAN> BACKUP INCREMENTAL LEVEL 1 CUMULATIVE DATABASE;
実行例とログ解説(19c)
以下は、レベル1バックアップを実行した際のログです。
RMAN> BACKUP INCREMENTAL LEVEL 1 DATABASE;
backupを25-02-16で開始しています
チャネルORA_DISK_1の使用
チャネルORA_DISK_1: 増分レベル1のデータファイル・バックアップ・セットを開始しています
チャネルORA_DISK_1: バックアップ・セットにデータファイルを指定しています
入力データファイル ファイル番号=00001 名前=/u01/app/oracle/oradata/V19/system01.dbf
入力データファイル ファイル番号=00003 名前=/u01/app/oracle/oradata/V19/sysaux01.dbf
入力データファイル ファイル番号=00004 名前=/u01/app/oracle/oradata/V19/undotbs01.dbf
入力データファイル ファイル番号=00005 名前=/u01/app/oracle/oradata/V19/rctbs01.dbf
入力データファイル ファイル番号=00007 名前=/u01/app/oracle/oradata/V19/users01.dbf
チャネルORA_DISK_1: ピース1 (25-02-16)を起動します
チャネルORA_DISK_1: ピース1 (25-02-16)が完了しました
ピース・ハンドル=/u01/app/oracle/product/19.0.0/dbhome_1/dbs/0v3huq6f_31_1_1 タグ=TAG20250216T154622 コメント=NONE
チャネルORA_DISK_1: バックアップ・セットが完了しました。経過時間: 00:00:07
backupを25-02-16で終了しました
Control File and SPFILE Autobackupを25-02-16で開始しています
ピース・ハンドル=/u01/app/oracle/product/19.0.0/dbhome_1/dbs/c-2957249400-20250216-09 コメント=NONE
Control File and SPFILE Autobackupを25-02-16で終了しました
補足:LEVEL 1 実行時に、RMAN はデータファイル全体をスキャンして変更ブロックを探します。このスキャンを高速化したい場合は、Enterprise Edition の「ブロック・チェンジ・トラッキング」を有効化してください。
トラブルシューティング:よくあるエラー
| ORAエラー | 原因 | 対処法 |
| ORA-19606 | 以前のレベル0が見つからない | 最初に LEVEL 0 を取得してください。 |
| ORA-19504 | ディスク容量不足 | FRA(高速リカバリ領域)の空きを確認。 |
| RMAN-06059 | ログ欠落 | CROSSCHECK ARCHIVELOG ALL; を実行。 |
運用上の注意点
- リカバリの手順:RMAN は自動的に適切なレベル0とレベル1を組み合わせて復旧します。ユーザーが手動でファイルを選ぶ必要はありません。
- 落とし穴:パスワードファイルや PFILE は RMAN バックアップに含まれないため、別途 OS コピー等で保管が必要です。
- 戻し方:万が一バックアップ設定を戻したい場合は、
CONFIGUREコマンドをCLEARすることで既定値に戻せます。
FAQ
Q:SE2(Standard Edition 2)でも使えますか?
A:はい、使えます。ただしスキャン高速化(BCT)は EE 専用です。
Q:レベル0と FULL バックアップは同じですか?
A:内容は同じですが、FULL は増分の基点になれません。増分運用なら必ず LEVEL 0 を指定してください。
Q:23ai への移行で変わる点は?
A:基本的な RMAN 構文は継承されますが、より高度な自動化や不変バックアップ(Immutable Backup)などのセキュリティ機能が強化されています。
まとめ
- 差分増分バックアップは、最小の容量で日次のデータを保護できる。
- 累積増分バックアップは、リカバリ時のファイル適用数を減らせる。
- 運用の基点は必ず LEVEL 0 で取得し、
FULLと混同しない。 - 定期的に
RESTORE ... VALIDATEでバックアップの健全性を確認する。
本記事は Oracle Database 19c を対象に解説します(他バージョンは画面や既定値が異なる場合があります)。
[参考]
Oracle Database バックアップおよびリカバリ・ユーザーズ・ガイド 19c
💰 【PR】Oracleエンジニアの市場価値、調べてみませんか?
Oracleのスキルは需要が高く、特定の資格や経験を持っていると年収が大幅にアップするケースがあります。まずはIT専門のエージェントで非公開求人をチェックしてみませんか?



コメント