連載
» 2011年04月21日 00時00分 公開

独学! ORACLE MASTER Gold 11g講座(6):圧縮バックアップと増分バックアップ (2/2)

[武見弘之,システム・テクノロジー・アイ]
前のページへ 1|2       

増分バックアップ

 今までご紹介してきたバックアップは「完全バックアップ」と呼ぶものであり、障害復旧時の「起点」となるバックアップファイルです。完全バックアップのファイルとREDOログファイル(アーカイブログ)を使えばデータを回復できます。しかし、REDOログファイルを使ったデータ復旧は、トランザクションを再度繰り返すことになり、後述する増分バックアップにくらべると処理速度の面では劣ります。

 増分バックアップは、データファイル上の変更されたブロックだけを記録したものです。例えば下図の場合、REDOログに記録してある、a〜cのSQLを再実行することでデータを復旧できます。しかし、REDOログを使うよりも増分バックアップを使った方が処理速度が上がると期待できるのです。

増分バックアップ

 増分バックアップを使うと、ログをたどる必要はありません。上図の例ではデータファイル上のブロックを1つだけ書き戻せば復旧できるのです。こうすることでデータを高速に回復させることが可能になります。

累積増分と差分増分

 Oracleでは2種類の増分バックアップを利用できます。1つ目は「累積増分バックアップ」と呼ぶもので、もう1つは「差分増分バックアップ」と呼ぶものです。これら2つの違いは、どの時点からの増分バックアップを作るかというところにあります。

 累積増分と差分増分の違いを簡単に説明する前に、Oracleが備える2種類の増分バックアップ機能を理解してください。Oracleでは「レベル0バックアップ」と「レベル1バックアップ」の2種類の増分バックアップを利用できます。

 レベル0バックアップを実行すると、対象となるデータファイルのすべてのデータをバックアップします(実質的に完全バックアップと変わることはありません)。

 そして累積増分バックアップは、レベル0バックアップからの増分をバックアップすることを意味します。差分増分バックアップは、レベル1バックアップからの増分をバックアップすることを指すのです。下の図は、その違いを表したものです。

累積増分と差分増分

 増分バックアップ取得の計画を立てるときは、最初にバックアップを「レベル0」として取得しておく必要があることに注意してください。RMANは、レベル0バックアップを起点として、増分バックアップを取得していきます。

 先に述べたとおり、レベル0バックアップは完全バックアップと変わりません。しかし、増分バックアップを取っていくためには、最初に「レベル0」という、いわばフラグを付けた形でバックアップを取る必要があるのです。下のコマンド実行例は、レベル0バックアップを取得しているところです。

RMAN> backup incremental level 0 database;
backupが開始されました(開始時間: YY-MM-DD)
チャネル: ORA_DISK_1が割り当てられました
チャネルORA_DISK_1: SID=170 デバイス・タイプ=DISK
チャネルORA_DISK_1: 増分レベル0のデータファイル・バックアップ・セットを開始しています

 レベル0バックアップの準備をしておき、しばらくデータベースを使った後で、差分増分バックアップを取ります。

RMAN> backup incremental level 1 database;
backupが開始されました(開始時間: YY-MM-DD)
チャネルORA_DISK_1の使用
チャネルORA_DISK_1: 増分レベル1のデータファイル・バックアップ・セットを開始しています

 累積増分バックアップを取るには、以下の例のようにコマンドを実行してください。

RMAN> backup incremental level 1 cumulative database;
(以下 メッセージは「差分増分バックアップ」と同じです)

 ちなみに、レベル0バックアップがない状態で、レベル1バックアップを取得しようとすると、自動的にレベル0バックアップを取得することになります。

高速増分バックアップ

 増分バックアップを取得するときは、ファイルのどの部分に変更があったのかを調べる必要があります。このため、バックアップ対象のファイルの内容をすべて読み取らなければ、変更部分を突き止めることはできません。もちろん増分バックアップとして取得する書き込み量は完全バックアップに比べて少ないですが、増分バックアップを効率よく取るために、読み取りデータ量を減らす仕組みがあります。この仕組みを利用して増分バックアップを取る機能を「高速増分バックアップ」と呼びます。

 高速増分バックアップでは、REDOログのデータが出力されたときに、CTWR(チェンジトラッキングライター)というプロセスが、それを監視し、どの部分に変更があったかを「ブロック変更トラッキングファイル」に、ビットマップ形式で記録します。

高速増分バックアップ

 RMANは、このブロック変更トラッキングファイルを確認することで、レベル0バックアップから、データファイル上のどのブロックに変更があったのかをピンポイントで把握できるため、バックアップ対象ファイルへの読み取りアクセスを減らすことができるのです。高速増分バックアップを実行するための設定として、次のようなコマンドを実行します。

SQL> ALTER DATABASE {ENABLE|DISABLE} BLOCK CHANGE TRACKING {USING FILE 'ファイルパス'};
ENABLE:有効化
DISABLE:無効化(デフォルト)
USING FILE 'ファイルパス' 
USING FILE句は省略時は、OMF(Oracle Managed Files)パラメータであるDB_CREATE_FILE_DESTで指定したディレクトリに格納されます

 ブロック変更トラッキングファイルは、必要に応じて10Mbytes単位で増えていきます。Oracle Database側から、このファイルの生成状況を把握するには「v$block_change_tracking」ビューで確認できます。ブロック変更トラッキングファイルのサイズはデータベース全体の大きさや、増分バックアップを取得する間隔などといった要因の影響を受けます。

 管理者はファイル配置とそのサイズをチェックしておくほかには、特別な作業が必要になるということはありません。ブロック変更トラッキングファイルができたら、Oracleがすべて自動的に活用します。

 次回は、取得したバックアップ関連のファイル管理を紹介します。

 では、今回解説したことについて確認問題で復習しましょう。

確認問題

問題1

 RMANを使用した圧縮バックアップについて、正しい説明をすべて選択しなさい。

a. BZIP2圧縮アルゴリズムは、ZLIB圧縮アルゴリズムに比べてプロセッサ時間を多く消費する

b. バックアップセットは常にBZIP2かZLIBによる圧縮が行われる

c. RMANのBACKUPコマンド、AS COMPRESSEDキーワードは、圧縮バックアップセット、ならびに圧縮イメージコピーを作成するときに使う

d. ZLIB圧縮アルゴリズムを使用することで、最高のバックアップ速度を得られる

e. 使用帯域幅を抑えることと、ディスク消費を減らすことができる

正解:a、e

●解説

  • バックアップセットを作るとき、標準設定では圧縮アルゴリズムを使わず、ストレージ上の未使用領域を削減するだけです。
  • イメージコピーは圧縮アルゴリズムを使って圧縮することはできません。
  • ZLIB圧縮アルゴリズムはBZIP2に比べてプロセッサ時間をあまり消費しませんが、バックアップ速度が常に優れていると保証されているわけではありません。
  • 圧縮アルゴリズムを利用することで、入出力のデータ量が減るため入出力部分の速度が低いときにも効果を期待できます。

問題2

 増分バックアップについて正しい説明をすべて選択しなさい

a. 累積増分バックアップは、完全バックアップ以降の増分データをバックアップするものだ

b. 差分増分バックアップは、完全バックアップ以降の増分データをバックアップするものだ

c. 累積増分バックアップは、レベル0バックアップ以降の増分をバックアップするものだ

d. レベル0バックアップとレベル1バックアップがあっても、障害の復旧にはアーカイブログやREDOログが必要

正解:c、d

●解説

  • 増分バックアップでは、まずレベル0としてフラグを付けたバックアップを取る必要があります。その内容は完全バックアップと同じものですが、「レベル0の増分バックアップ」と呼びます。
  • 障害の復旧に当たって増分バックアップがあれば、RMANは自動的に増分バックアップを使います。ただし、最後の増分バックアップ以降の変更を反映させるにはアーカイブログとREDOログが必要です。

問題3

 高速増分バックアップに関する説明として正しいものをすべて選択しなさい

a. 「DB_CREATE_FILE_DEST」パラメータを必要とする

b. レベル1バックアップを取得する前に有効にしておけば活用される

c. レベル0バックアップを取得すると、ビットがリセットされる

d. 取得される増分バックアップのサイズを小さくできる可能性がある

e. 変更トラッキングファイルは、CTRWによりREDOの生成時に更新される

f. ブロック変更トラッキングファイルのサイズはREDOログの容量に比例する

正解:c、e

●解説

  • 高速増分バックアップは「ALTER DATABASE ENABLE CHANGE TRACKING」コマンドで有効になりますが、ファイルの生成場所は任意に決められます。「DB_CREATE_FILE_DEST」パラメータは設定しなくても問題ありません。
  • レベル1バックアップを取得する前に有効としても、レベル0バックアップを取ってから、どのブロックに変更が加わったのかを追跡することはできません。ブロック変更トラッキング機能はいつでも有効にできますが、増分バックアップというものは、レベル0バックアップと比較して変わった部分のデータをバックアップするものです。「ブロック変更トラッキングを有効にする」→「レベル0バックアップを取る」という手順を踏むことで、正しく前の世代のバックアップデータから変わった点を正しく認識できるということになります。
  • レベル0以降の変更点を追うのが増分バックアップの基本です。そう考えると、レベル0バックアップを取ったときに、変更点の情報はリセットしなければなりません。
  • ブロック変更トラッキングファイルを使うことで、バックアップ元のデータファイルへのアクセス量が減るため、処理性能が上がりますが、増分バックアップのファイルサイズは変わりません。
  • ブロック変更トラッキングファイルはREDOログの生成時に更新されます。ただし、REDOログのサイズとの因果関係はありません。


前のページへ 1|2       

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。