ここからは具体的に増分バックアップを行うコマンドについて説明します。増分バックアップを行うには、まずベースとなるバックアップ(LEVEL 0)を取得する必要があります。リスト1がその例になります。
Configure channel device type disk |
リスト1 増分バックアップで全体バックアップを取得するコマンド例 (1)DISKチャネル共通でバックアップファイルの保存先を設定(置換変数「%U」を指定すると、RMANによってユニークな値が指定される) (2)バックアップ・セットでターゲット・データベースの全体バックアップ、およびアーカイブREDOログファイルのバックアップを取得、その後バックアップ済みのアーカイブREDOログファイルを削除 |
次に差分増分バックアップ(LEVEL 1)の取得方法を見てみましょう。
configure channel device type disk |
リスト2 差分バックアップを差分増分バックアップで取得するコマンド例 |
リスト2の差分増分バックアップコマンドに「cumulative」句を付けると累積増分バックアップになります。
configure channel device type disk |
リスト3 差分バックアップを累積増分バックアップで取得するコマンド例 |
また、差分増分と累積増分バックアップは組み合わせて使用することもできます。例えば、ベースとなるバックアップ(LEVEL 0)を月に1回のみとし、週末に累積増分バックアップ(LEVEL 1 cumulative)、平日は差分増分バックアップ(LEVEL 1)というバックアップ運用も可能です。
増分バックアップの最初で説明したように、増分バックアップは更新したブロックのみを書き込むため、バックアップファイルサイズは小さくなり、保存先のDISKやTAPEへの書き込み時間が短縮されます。しかし、更新したブロックを確認するためには、バックアップ対象のデータファイルをすべて読み込む必要があります。そのため、バックアップ対象ブロックを確認するI/O負荷や、その処理時間については効果的であるといえません。
しかし、Oracle 10gからの新機能であるブロック・チェンジ・トラッキング機能を設定することで、この部分のパフォーマンスを改善できます。この機能では、データベースに対する更新が発生したときに、変更されたブロックの情報をブロック・チェンジ・トラッキングファイルに記録しておきます。そして、増分バックアップの実行時には、そのブロック・チェンジ・トラッキングファイル内の変更されたブロック情報を参照し、変更されたブロックのみにアクセスします(図5)。そのため、増分バックアップ時の変更ブロックを確認する時間が短縮され、結果的に大幅なバックアップ時間の短縮が可能となります。
ブロック・チェンジ・トラッキング機能を設定するには、DBA権限を持つ管理者で接続し、SQL*Plusを使用してリスト4のコマンドを実行します。
SQL> alter database enable block change tracking |
リスト4 ブロック・チェンジ・トラッキング機能を有効にする |
それでは実際に、ブロック・チェンジ・トラッキング機能の有無により、どれだけ処理時間が短縮されるかを確認してみましょう。今回は、ベースとなる全体バックアップとして、リスト1のコマンドを実行後、テーブルを1万行(約3500ブロック)更新し、その後、リスト2の差分増分バックアップをブロック・チェンジ・トラッキング機能が有効になっている場合と、そうでない場合で処理時間を比較したものが表1になります。
バックアップ方法 | 処理時間 | |
---|---|---|
全体バックアップ(LEVEL 0) | 3分16秒 | |
差分バックアップ(LEVEL 1、ブロック・チェンジ・トラッキング機能なし) | 2分6秒 | |
差分バックアップ(LEVEL 1、ブロック・チェンジ・トラッキング機能あり) | 7秒 | |
表1 ブロック・チェンジ・トラッキング機能の有無による処理時間の違い |
表1のとおり、ブロック・チェンジ・トラッキング機能を使用することにより、処理時間が改善されたことが分かります。ただし、実際のシステムでどれぐらい改善されるかについては、事前に検証して確認を行ってください。
また、ブロック・チェンジ・トラッキングファイルを使用するうえで、以下のような注意点があります。
SQL> alter
database disable block change tracking; |
リスト5 ブロック・チェンジ・トラッキング機能を無効にする |
Copyright © ITmedia, Inc. All Rights Reserved.