【Oracle】RMANで増分バックアップを取得する方法|LEVEL 0とLEVEL 1の違いと使い分け

【Oracle】RMANで増分バックアップを取得する方法|LEVEL 0とLEVEL 1の違いと使い分け Oracle

Oracleデータベースのバックアップを効率化する手段の一つが、RMAN(Recovery Manager)による増分バックアップです。特に大規模なデータベース環境では、毎回フルバックアップを取るのは非効率ですが、増分バックアップを活用することで、変更されたデータだけをバックアップ対象にでき、処理時間とディスク容量を大幅に節約できます。

本記事では、RMANのLEVEL 0LEVEL 1の違いや、具体的な使い分け、実行例について詳しく解説します。

RMANの増分バックアップとは?

増分バックアップとは、前回のバックアップ以降に変更されたデータブロックのみをバックアップする方法です。RMANでは、以下の2つのレベルに分類されます:

LEVEL 0 バックアップ

  • 完全なフルバックアップと同じ
  • 増分バックアップの基準となるバックアップ
  • 最初に必ず取得する必要がある

LEVEL 1 バックアップ

  • LEVEL 0以降に変更があったブロックのみをバックアップ
  • LEVEL 0を基準とした差分バックアップ(デフォルト)
  • LEVEL 1だけではリカバリできない

差分と累積の違い

LEVEL 1 バックアップには、さらに「差分」と「累積」の2種類があります。

種類 対象
差分(INCREMENTAL LEVEL 1) 直前のLEVEL 0 または LEVEL 1 バックアップ以降の変更ブロック
累積(INCREMENTAL LEVEL 1 CUMULATIVE) 直前のLEVEL 0 バックアップ以降すべての変更ブロック

基本的な実行例

LEVEL 0 バックアップの取得

RUN {
  BACKUP INCREMENTAL LEVEL 0 DATABASE FORMAT '/backup/full_%U.bkp';
}

最初にこのLEVEL 0バックアップを取得しておくことで、以降の増分バックアップが機能します。

差分バックアップ(LEVEL 1)の取得

RUN {
  BACKUP INCREMENTAL LEVEL 1 DATABASE FORMAT '/backup/inc_%U.bkp';
}

累積バックアップ(LEVEL 1 CUMULATIVE)の取得

RUN {
  BACKUP INCREMENTAL LEVEL 1 CUMULATIVE DATABASE FORMAT '/backup/cum_%U.bkp';
}

増分バックアップの運用例(週間スケジュール)

  • 日曜日: LEVEL 0 フルバックアップ
  • 月~土曜日: LEVEL 1 差分バックアップ

このスケジュールであれば、1週間分のリカバリが可能で、ディスク容量も節約できます。

リカバリ時の挙動

リストア時は、RMANが自動的に LEVEL 0 および LEVEL 1 のバックアップを組み合わせて、最も効率の良い順序で復元処理を実行します。

LEVEL 1(差分)を頻繁に取りつつ、定期的にLEVEL 0を取り直すことで、リカバリの高速化と確実性を両立できます。

まとめ

RMANの増分バックアップは、Oracleデータベースのバックアップ運用において、パフォーマンスとストレージ効率を両立させる重要な手法です。

  • LEVEL 0:増分の基準となるフルバックアップ
  • LEVEL 1(差分):直前のバックアップ以降の変更分
  • LEVEL 1(累積):LEVEL 0 以降の変更をすべて取得

システム構成やリカバリ要件に応じて、LEVEL 0 と LEVEL 1 の組み合わせを設計し、効率的なバックアップ戦略を構築していきましょう。