データベースの増分バックアップ

増分バックアップの概念

主な使用目的
  1. 増分更新バックアップに基づく計画で使用する場合。れらの増分バックアップは、データベースのイメージ・コピーを定期的にロールフォワードするために使用される。
  2. 毎日のバックアップに必要な時間を削減する場合
  3. ネットワーク経由でバックアップする際のネットワーク帯域幅を削減する場合
  4. テープ書込みI/Oで使用可能な集計テープ帯域幅が、ディスク読込みI/Oの集計ディスク帯域幅より大幅に少ない場合に、適切なバックアップ・パフォーマンスを得る場合
  5. NOLOGGINGオプションを使用して作成されたオブジェクトへの変更をリカバリ可能にする場合。
  6. NOARCHIVELOGデータベースのバックアップ・サイズを削減する場合。NOARCHIVELOGモードの場合は、一貫性のある状態で停止した後にのみ、増分バックアップを作成できる。
増分バックアップ・アルゴリズム

RMANは各データブロックの最後に変更されたSCNを読み取り、親増分バックアップのチェックポイントSCNと比較する。入力データブロックのSCNが親のSCN以上である場合、RMANはそのブロックをコピーする。ブロック・チェンジ・トラッキング機能を有効にすると、Recovery Managerは、チェンジ・トラッキング・ファイルを参照して、データ・ファイルの内容全体をスキャンしなくても、データ・ファイル内の変更されたブロックを識別できる。

レベル0の増分バックアップ

レベル0の増分バックアップ

基本的に全体バックアップと同じだが、違うのは、全体バックアップが増分バックアップの親になれないことに対し、レベル0がレベル1の増分バックアップの親になれる。

RMAN> BACKUP INCREMENTAL LEVEL 0 DATABASE;
レベル0の増分にアーカイブログを
RMAN> BACKUP AS BACKUPSET INCREMENTAL LEVEL 0 DATABASE PLUS ARCHIVELOG DELETE ALL INPUT;

レベル1の増分バックアップ

レベル1の増分バックアップ

レベル0または最新のレベル1に基づいて、それ以降変更されたブロックを増分バックアップにバックアップする。

RMAN> BACKUP INCREMENTAL LEVEL 1 DATABASE PLUS ARCHIVELOG DELETE ALL INPUT;
個別表領域のレベル1増分
RMAN> BACKUP INCREMENTAL LEVEL 1 TABLESPACE INDX,OLTP;
レベル1の累積バックアップ

累積の場合は、レベル0の後、変更された全てのブロックをバックアップ。

RMAN> BACKUP INCREMENTAL LEVEL 1 CUMULATIVE DATABASE PLUS ARCHIVELOG DELETE ALL INPUT;

チェンジ・トラッキング 増分バックアップのパフォーマンス改善

チェンジ・トラッキングの概要
  • チェンジ・トラッキング・ファイル内の各データ・ファイルで変更されたブロックを記録することにより、増分バックアップのパフォーマンスが改善される。これによって、データ・ファイル内のすべてのブロックをスキャンする必要がなくなる。
  • チェンジ・トラッキングを有効にした直後は、チェンジ・トラッキング・ファイルにブロックの状態が反映されていないため、レベル0の最初の増分バックアップでは、データ・ファイル全体をスキャンする必要がある。
  • RAC環境でチェンジ・トラッキング・ファイルはクラスタ中の全ノードからアクセス可能な共有ストレージに置く必要がある。
  • データベースの拡張に伴う領域割当てのオーバーヘッドを回避するために、チェンジ・トラッキング・ファイルの初期サイズは10MBで、10MBずつ新しい領域が割り当てられる。つまり、このファイルのサイズは、約300GBまでのデータベースに対しては10MB以上、約600GBまでのデータベースに対しては20MB以上になる。
チェンジ・トラッキングの有効化及び無効化
-- SQL*PLUSでデータベースに接続し,現在のチェンジ・トラッキング状態を確認する
SQL> select * from v$block_change_tracking;
 
STATUS                         FILENAME                                                          BYTES
------------------------------ ------------------------------------------------------------ ----------
DISABLED
 
-- チェンジ・トラッキングを有効にする同時に、チェンジ・トラッキングファイルの保存先を指定する。
SQL> ALTER DATABASE ENABLE BLOCK CHANGE TRACKING USING FILE '/u04/app/oracle/oradata/PROD/track/rman_change_track.f' REUSE;
 
Database altered.
 
-- 現在のチェンジ・トラッキング状態を確認する
SQL> select * from v$block_change_tracking;
 
STATUS                         FILENAME                                                          BYTES
------------------------------ ------------------------------------------------------------ ----------
ENABLED                        /u04/app/oracle/oradata/PROD/track/rman_change_track.f         11599872
 
SQL>
-- RMANに接続して、レベル0の増分バックアップを取得する
RMAN> BACKUP INCREMENTAL LEVEL 0 DATABASE PLUS ARCHIVELOG DELETE ALL INPUT;
 
Starting backup at 09-04-06
current log archived
using channel ORA_DISK_1
channel ORA_DISK_1: starting archive log backupset
省略。。。
RMAN>
-- レベル1の増分バックアップ
RMAN> BACKUP INCREMENTAL LEVEL 1 DATABASE PLUS ARCHIVELOG DELETE ALL INPUT;
 
Starting backup at 09-04-06
current log archived
using channel ORA_DISK_1
channel ORA_DISK_1: starting archive log backupset
channel ORA_DISK_1: specifying archive log(s) in backup set
input archive log thread=1 sequence=107 recid=208 stamp=683425270
channel ORA_DISK_1: starting piece 1 at 09-04-06
channel ORA_DISK_1: finished piece 1 at 09-04-06
piece handle=/u04/app/oracle/oradata/PROD/rman/PROD_9ckboffm_1_1_20090406.bak tag=TAG20090406T002110 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:02
channel ORA_DISK_1: deleting archive log(s)
archive log filename=/u04/app/oracle/oradata/PROD/arch2/PROD_1_107_681605019.arc recid=208 stamp=683425270
archive log filename=/u04/app/oracle/oradata/PROD/arch1/PROD_1_107_681605019.arc recid=207 stamp=683425270
Finished backup at 09-04-06
 
Starting backup at 09-04-06
using channel ORA_DISK_1
channel ORA_DISK_1: starting incremental level 1 datafile backupset
channel ORA_DISK_1: specifying datafile(s) in backupset
input datafile fno=00007 name=/u02/app/oracle/oradata/PROD/example_01.dbf
input datafile fno=00001 name=/u01/app/oracle/oradata/PROD/system01.dbf
input datafile fno=00003 name=/u01/app/oracle/oradata/PROD/sysaux01.dbf
input datafile fno=00002 name=/u01/app/oracle/oradata/PROD/undotbs01.dbf
input datafile fno=00005 name=/u02/app/oracle/oradata/PROD/batch_01.dbf
input datafile fno=00004 name=/u01/app/oracle/oradata/PROD/users01.dbf
input datafile fno=00008 name=/u02/app/oracle/oradata/PROD/oltp_01.dbf
input datafile fno=00006 name=/u02/app/oracle/oradata/PROD/indx_01.dbf
channel ORA_DISK_1: starting piece 1 at 09-04-06
channel ORA_DISK_1: finished piece 1 at 09-04-06
piece handle=/u04/app/oracle/oradata/PROD/rman/PROD_9dkboffp_1_1_20090406.bak tag=TAG20090406T002112 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:01 -- 一秒でだいぶ早くなった。
Finished backup at 09-04-06
 
Starting backup at 09-04-06
current log archived
using channel ORA_DISK_1
channel ORA_DISK_1: starting archive log backupset
channel ORA_DISK_1: specifying archive log(s) in backup set
input archive log thread=1 sequence=108 recid=209 stamp=683425274
channel ORA_DISK_1: starting piece 1 at 09-04-06
channel ORA_DISK_1: finished piece 1 at 09-04-06
piece handle=/u04/app/oracle/oradata/PROD/rman/PROD_9ekboffq_1_1_20090406.bak tag=TAG20090406T002114 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:02
channel ORA_DISK_1: deleting archive log(s)
archive log filename=/u04/app/oracle/oradata/PROD/arch1/PROD_1_108_681605019.arc recid=209 stamp=683425274
archive log filename=/u04/app/oracle/oradata/PROD/arch2/PROD_1_108_681605019.arc recid=210 stamp=683425274
Finished backup at 09-04-06
 
Starting Control File and SPFILE Autobackup at 09-04-06
piece handle=/u04/app/oracle/oradata/PROD/rman/ctl_c-93443355-20090406-01 comment=NONE
Finished Control File and SPFILE Autobackup at 09-04-06
 
RMAN>
-- チェンジ・トラッキングを無効するには SQL*PLUSに接続し、下記のSQLを発行する。
SQL> ALTER DATABASE DISABLE BLOCK CHANGE TRACKING;
 
Database altered.
 
SQL> select * from v$block_change_tracking;
 
STATUS                         FILENAME                                                          BYTES
------------------------------ ------------------------------------------------------------ ----------
DISABLED
 
SQL>
チェンジ・トラッキング・ファイルの移動
  1. データベースが停止可能な場合
    1. データベースシャットダウン。
    2. OSのcpコマンドでチェンジ・トラッキング・ファイルを新しい場所へ移動。
    3. データベースをマウントし、ALTER DATABASE RENAME FILE 'old_file' TO 'new_file'を発行。
    4. データベースをオープンする。
  2. データベースが停止不可な場合
    1. ALTER DATABASE DISABLE BLOCK CHANGE TRACKING;
    2. ALTER DATABASE ENABLE BLOCK CHANGE TRACKING USING FILE 'new_location';
    3. レベル0の増分バックアップを取得する、取得しないと有効にならない。
Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License