| Oracle Database バックアップおよびリカバリ基礎 10gリリース2(10.2) B19193-02 |
|
この付録では、Recovery Manager、増分更新バックアップおよびフラッシュ・リカバリ領域を効果的に使用する、ディスクのみのバックアップ計画およびディスクとテープベースのバックアップ計画のいくつかについて説明します。
この付録では、次の項目について説明します。
次に示すすべての例では、Recovery Manager環境およびフラッシュ・リカバリ領域が「ディスク・ベースのバックアップ用のフラッシュ・リカバリ領域の構成: 例」のように構成されていることを前提としています。
バックアップ・スクリプトの動作の詳細は、データベースの負荷および割り当てられているディスク領域の量に依存します。次のスクリプトは、データベースの更新パターン、およびディスク上のリカバリ期間のアーカイブに必要なフラッシュ・リカバリ領域に割り当てられた最小限のディスク領域に基づいて分類できます。
少数のデータベース・ブロックが変更される場合、増分バックアップのサイズは、データベースのサイズより大幅に小さくなります。この場合、ディスク領域と他のリソースを有効に利用するために、増分バックアップが最適なバックアップ方法です。
ほとんどまたはすべてのデータベース・ブロックが頻繁に変更される場合、増分バックアップのサイズは、データベースのサイズと同等に大きくなります。この場合、データベースの完全なイメージ・コピーを定期的に作成することが最適なバックアップ方法です。
次の例では、アーカイブ・ログのバックアップは必要ありません。これらのログは、Oracleがフラッシュ・リカバリ領域にアーカイブするためです。アーカイブ・ログは、保存方針で必要とされる間は、フラッシュ・リカバリ領域に残ります。また、すべてのデータベース・バックアップもフラッシュ・リカバリ領域に保存されます。
この項では次の項目を取り上げます。
毎日変更されるデータ・ブロックが少数の場合、増分バックアップのサイズは小さくなるので、毎日の増分バックアップを実行する計画を変更できます。
ディスク上のフラッシュ・リカバリ領域の推奨最小サイズは、バックアップの頻度と使用される保存方針によって異なります。
構成済の保存方針がREDUNDANCY Xで、Y日ごとにバックアップを取る場合は、フラッシュ・リカバリ領域の推奨ディスク割当て制限を求める式は、次のようになります。
Disk Quota = Size of X copies of database + Size of one copy of incremental backups + Size of (Y+1) days of archived logs
保存方針をX日のリカバリ期間に設定し、バックアップ・スクリプトをY日ごとに実行する場合、次のいずれかの式で必要なディスク割当て制限を計算できます。X>=Yの場合、フラッシュ・リカバリ領域の推奨ディスク割当て制限を求める式は、次のとおりです。
Disk Quota = Size of one copy of database + Size of (floor(X/Y) + 1) copies of incremental backups + Size of (X * ceil(X/Y) +1) days of archived logs
この場合、ceil(X/Y)はX/Y以上の最小整数で、floor(X/Y)はX/Y以下の最大整数です。
X <Yの場合、推奨値を求める式は次のとおりです。
Disk Quota = Size of one copy of database + Size of 2 copies of incremental backups + Size of (Y +1) days of archived logs
適切な方の式に従って、フラッシュ・リカバリ領域のサイズを求めます。
次の例では、保存方針がREDUNDANCY 1であると想定しています。
RMAN> CONFIGURE RETENTION POLICY TO REDUNDANCY 1;
また、バックアップを毎日実行することを想定しています。
毎日バックアップを実行するためのスクリプトは、次のようになります。
RMAN> RECOVER COPY OF DATABASE WITH TAG "whole_db_copy"; # Make an incremental backup of the database to the flash recovery area. RMAN> BACKUP INCREMENTAL LEVEL 1 FOR RECOVER OF COPY WITH TAG "whole_db_copy" DATABASE;
このバックアップ方法の1日目の時点で、"whole_db_copy"というタグが付けられたバックアップが存在しないとします。このスクリプトの実行結果は次のとおりです。
RECOVER文は、処理を実行しません。BACKUP... FOR RECOVER OF COPYは、レベル0の初期データベースのコピーを作成します。
RECOVER文は、何も処理を実行しません。BACKUPコマンドは、レベル1の最初の増分バックアップを作成します。
このバックアップ計画は、2月1日に有効になります。次の表に、この計画の結果、フラッシュ・リカバリ領域の内容がどのように変化するかを示します。(フラッシュ・リカバリ領域には、他のバックアップ操作に基づく他のファイルも含まれます。次の表では、このバックアップ計画に関連するファイルについてのみ示します。)
例を変更する場合(n日分(n > 1)のアーカイブ・ログと増分バックアップを保持できるように、フラッシュ・リカバリ領域のサイズを変更する場合)は、RECOVER行をRECOVER COPY UNTIL TIME 'SYSDATE-n'に変更します。たとえば、フラッシュ・リカバリ領域が3日分の増分バックアップを保持できる大きさの場合、スクリプトを次のように変更できます。
RECOVER COPY OF DATABASE TAG "whole_db_copy" UNTIL TIME 'SYSDATE-3'; # Make an incremental backup of the database to the flash recovery area. BACKUP INCREMENTAL LEVEL 1 FOR RECOVER OF COPY WITH TAG "whole_db_copy" DATABASE;
毎日スクリプトを実行すると、Recovery Managerは、現在から3日前のSCNまでデータベース全体のコピーをロールフォワードします。つまり、ディスク割当て制限規則によって、SYSDATE-3日後に作成されたアーカイブ・ログと増分バックアップは保持されます(これは、過去3日のSCNまでデータベースをリカバリするために必要なためです)。
次の表に、この計画で毎日スクリプトを実行した後、フラッシュ・リカバリ領域に格納されるファイルを示します。
一般的なCRM環境の例では、1週間で多数またはほとんどのデータ・ブロックが更新されます。
冗長性Xという保存方針と、Y日ごとに実行されるバックアップ・スクリプトを使用する場合、ディスク割当て制限の最小値は、次の式で判断できます。
Disk Quota = Size of X copies of the database + size of Y days of archived redo logs
リカバリ期間X日という保存方針と、Y日ごとに実行されるバックアップ・スクリプトを使用する場合、X>=Yであれば、次の式でディスク割当て制限を判断できます。
Disk Quota = Size of 1 copy of the database + size of ((X * ceil(X/Y)) +1) days of archived redo logs
この場合、ceil(X/Y)はX/Y以上の最小整数です。
X<Yの場合のディスク割当て制限は、X=Yの場合と同じです。つまり、次のようになります。
Disk Quota = Size of 1 copy of the database + size of (Y +1) days of archived redo logs
次の例では、保存方針がREDUNDANCY 1で、バックアップ・スクリプトを毎週実行すると想定しています。この例のディスク割当て制限の最小値は次のようになります。
Disk Quota = Size of 1 copy of the database + size of 8 days of archived logs
この例では、初期設定スクリプトは必要ありません。次に、毎週実行するバックアップ・スクリプトの例を示します。
# Execute once a week # Make a full backup of the database to the flash recovery area. BACKUP DATABASE TAG "weekly_full_bkup";
次の表に示すとおり、データベースのレベル0のコピーと、1週間分のアーカイブ・ログを保持するディスク割当て制限が必要です。
| 日付 | 処理 | フラッシュ・リカバリ領域の内容 |
|---|---|---|
|
2月1日(日) |
レベル0をバックアップします。 |
全体バックアップ |
|
2月8日(日) |
レベル0をバックアップします。 |
今日からの全体バックアップ、2月1日〜8日のアーカイブ・ログ |
|
以降の各日曜日 |
レベル0をバックアップします。 |
この日曜日からの全体バックアップ、前回の日曜日からこの日曜日までのアーカイブ・ログ |
約半数のデータ・ブロックが毎週変更される場合、または変更されるデータ・ブロックの数が週ごとに大きく異なる場合に、この計画を使用します。この計画で実行するスクリプトは、増分更新バックアップを使用する汎用スクリプトです。最初に、データベースのイメージ・コピーを作成し、定期的にレベル1の増分バックアップを取り、レベル0の既存のコピーをロールフォワードします。
フラッシュ・リカバリ領域に必要な領域を求める式は、保存方針によって異なります。保存方針がREDUNDANCY Xで、Y日ごとに実行するバックアップ・スクリプトの場合、必要なディスク領域は次のとおりです。
Disk Quota = Size of X copies of the database + Size of 1 incremental backup + Size of Y+1 days of archived redo logs
リカバリ期間がX日で、Y日ごとに実行するバックアップ・スクリプトの場合、X>=Yであれば、必要な領域は次のとおりです。
Disk Quota = Size of 1 copy of the database + Size of floor(X/Y)+1 incremental backups + Size of (X * ceil(X/Y)) + 1 days of archived logs
この場合、ceil(X/Y)はX/Y以上の最小整数で、floor(X/Y)はX/Y以下の最大整数です。
X<Yの場合に必要な領域は、X=Yの場合と同じです。
Disk Quota = Size of 1 copy of the database + Size of 2 incremental backups + Size of Y+1 days of archived logs
次の例では、保存方針がREDUNDANCY 1で、バックアップ・スクリプトを毎週実行すると想定しています。
この例のディスク割当て制限の最小値は次のようになります。
Disk Quota = Size of 1 copy of the database + Size of 1 incremental backup + Size of 8 days of archived logs
1週目、BACKUP... FOR RECOVER OF COPYコマンドは、データベースのレベル0の増分バックアップをフラッシュ・リカバリ領域に作成します。このバックアップは、毎週の計画の基本になります。2週目以降、このコピーが、最後の増分バックアップのチェックポイント時間までロールフォワードされます。このようにして、ディスク上で行う1週間のリカバリ期間を作成します。
初期設定の後、毎週実行するバックアップ・スクリプト(毎週、日曜日の夜に実行するなど)は、次のようになります。
# Execute once a week # Roll forward the whole copy of the database to last incremental backup SCN RECOVER COPY OF DATABASE TAG "whole_db_copy"; # Make an incremental backup of the database to the flash recovery area. BACKUP INCREMENTAL LEVEL 1 FOR RECOVER OF COPY WITH TAG "whole_db_copy" DATABASE;
次の表に、バックアップ・スクリプトを実行するたびに、フラッシュ・リカバリ領域の内容がどのように変化するかを示します。ここでは、常に、十分なアーカイブ・ログとバックアップを保存して、7日間のリカバリ期間を保持します。
ここでは、Recovery Managerを使用して、フラッシュ・リカバリ領域にバックアップを作成した後、それらをテープに移動する方法について説明します。
この項で実行するスクリプトは、フラッシュ・リカバリ領域をログのアーカイブ先およびすべてのディスク・バックアップ先として使用します。つまり、フラッシュ・リカバリ領域にアーカイブ・ログまたはバックアップを作成するための領域がない場合は、Oracleが、不要またはテープに移動されたアーカイブ・ログおよびバックアップを自動的に削除します。
バックアップ・ファイルおよびアーカイブREDOログをテープに移動すると、フラッシュ・リカバリ領域で新しいファイル用に使用できる領域が増加します。フラッシュ・リカバリ領域のディスク割当て制限を求める式では、最小値が計算されます。このディスク割当て制限は、保存方針を満たすためのテープ領域の可用性によって異なります。ただし、式で計算されるより多くのフラッシュ・リカバリ領域のディスク割当て制限を行うことによって、ディスク上のリカバリ期間を増やし、データベースのリストアおよびリカバリ時にテープからアーカイブREDOログおよびバックアップをリストアする必要性を削減できます。
Recovery Managerを使用して、保存方針、バックアップの最適化および制御ファイルの自動バックアップを構成します。次に例を示します。
CONNECT TARGET SYS/orace@trgt; # Recovery window of 15 days ensures that the database is recoverable within 7 # days using backups on disk and tape CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 15 DAYS; CONFIGURE BACKUP OPTIMIZATION ON; # Because you do not use a recovery catalog, enable the autobackup feature CONFIGURE CONTROLFILE AUTOBACKUP ON; CONFIGURE DEVICE TYPE sbt PARMS='...' PARALLELISM 1; # PARMS are vendor-specific
ディスク専用の場合と同様に、この項で実行するバックアップ・スクリプトは、データベースの負荷に基づいて分類されます。
この例では、比較的少数のデータ・ブロックが頻繁に変更されるため、レベル1の毎日の増分バックアップのサイズは小さくなります。この例の目的は、ディスク上にあるレベル0の1つの増分バックアップを、レベル1の増分バックアップを使用して毎日増分更新した後、他のすべてのファイルをテープに移動することです。これによって、フラッシュ・リカバリ領域の使用量を最小限に抑えることができます。
フラッシュ・リカバリ領域を必要なディスク割当て制限で作成し、そのフラッシュ・リカバリ領域をREDOログのアーカイブ先として設定します。
ディスク割当て制限を求める式は、バックアップの保存方針によって異なります。ただし、保存方針が冗長性に基づくか、リカバリ期間に基づくかは同じです。次の式を使用します。
Disk Quota = Size of 1 copy of the database + size of 1 day's level 1 incremental backup + size of (Y+1) days of archived logs
この場合、Yは、各バックアップ・スクリプトでBACKUP RECOVERY AREAを実行する間隔(日数)です。
この例の場合、1つのバックアップ・スクリプトが毎日実行され、レベル1の新しい増分バックアップが、その日の変更を反映して作成されます。その後、前日からのレベル1のバックアップを使用して、レベル0のバックアップをロールフォワードし、フラッシュ・リカバリ領域のすべてのファイルをテープにバックアップします。スクリプトは、フラッシュ・リカバリ領域を毎日テープにバックアップするため、フラッシュ・リカバリ領域は、データベースのコピー、レベル1の毎日の増分バックアップおよび2日分のアーカイブREDOログを保持できる大きさである必要があります。
ディスク上のリカバリ期間は1日です。1日以上前の時点にリカバリするには、Recovery Managerは、バックアップをテープからリストアする必要があります。
初期設定の後、Recovery Managerによって通常毎日実行するバックアップ・スクリプトは、次のようになります。
# Execute each day of the week # Roll forward the copy to most recent incremental backup SCN, which will # be yesterday's incremental level 1 backup RECOVER COPY OF DATABASE WITH TAG "daily_backup"; # Take incremental backups to flash recovery area (using default disk channel) BACKUP INCREMENTAL LEVEL 1 FOR RECOVER OF COPY WITH TAG "daily_backup" DATABASE; # Back up flash recovery area to tape BACKUP RECOVERY AREA; # delete obsolete backups on tape DELETE OBSOLETE DEVICE TYPE sbt;
次の表に、このスクリプトを毎日実行すると、フラッシュ・リカバリ領域とテープの内容がどのように変化するかを示します。スクリプトは、daily_backupというタグが付けられたレベル0のデータベースのコピーを、前日のレベル1の増分バックアップのSCNまでロールフォワードした後、レベル1の新しい増分バックアップを、前日の変更を反映して作成します。たとえば、木曜日にスクリプトを実行すると、Recovery Managerは、レベル0のバックアップを、水曜日の増分バックアップのSCNまでロールフォワードします。
この例では、CRM環境の例と同様に、1週間で多数またはほとんどのデータ・ブロックが更新されます。毎日の増分バックアップを実行する計画は、増分バックアップのサイズが非常に大きくなり、予測が困難なためお薦めしません。
この場合は、データベースを毎週テープにバックアップし、アーカイブ・ログを毎日テープにバックアップし、リカバリ期間ベースの保存方針を使用する計画が適しています。
この計画では、次の処理が実行されます。
BACKUP RECOVERY AREAコマンドを使用して、毎日テープにバックアップされ、テープに格納されている不要なファイルは削除されます。
リカバリ期間ベースの保存方針を使用すると、その期間にPoint-in-Timeリカバリの実行に必要なすべてのバックアップは、必要な間は保持されます。これによって、ディスク領域の使用に制限がある場合でも、データは保護されます。
フラッシュ・リカバリ領域を必要なディスク割当て制限で作成し、そのフラッシュ・リカバリ領域をREDOログのアーカイブ先として設定します。ディスク割当て制限を求めるための式は、テープへのフラッシュ・リカバリ領域のバックアップ頻度によって異なります。
Disk Quota = Size of 1 copies of the database + size of (Y+1) days of archived logs
この場合、Yは、各バックアップ・スクリプトでBACKUP RECOVERY AREAを実行する間隔(日数)です。
この例では、データベースの全体バックアップを毎週実行し、テープへのフラッシュ・リカバリ領域のバックアップを毎日実行すると想定しています。
この計画では、2つのスクリプトを実行します。1つ目のスクリプトは、各週の1日目(日曜日)に実行し、データベースの全体バックアップを作成します。2つ目のスクリプトは、各週の他の日(月曜日〜土曜日)に実行し、フラッシュ・リカバリ領域の内容(その日のアーカイブREDOログ)をテープにバックアップします。
この計画では、どちらのスクリプトにもBACKUP RECOVERY AREAコマンドが含まれるため、コマンドは毎日実行されます。この例では、Y=1であるため、ディスク割当て制限は、データベースの1つのコピーに、2日分のアーカイブREDOログを足したサイズになります。
次のRecovery Managerバックアップ・スクリプトは、毎週日曜日に実行されます。
# Execute only once a week # Take copy of database to flash recovery area BACKUP AS COPY DATABASE; # Take backup of flash recovery area to tape BACKUP RECOVERY AREA; # Delete obsolete backups on tape DELETE OBSOLETE DEVICE TYPE sbt; EXIT;
毎日(月曜日〜土曜日)実行されるRecovery Managerスクリプトは、次のようになります。
# Execute 6 days/wk # Take backup of flash recovery area to tape BACKUP RECOVERY AREA; # delete obsolete backups on tape DELETE OBSOLETE DEVICE TPE sbt;
フラッシュ・リカバリ領域全体が毎日テープにバックアップされるため、新しいファイル用に領域が必要になると、データベースは、バックアップおよびアーカイブREDOログ・ファイルをフラッシュ・リカバリ領域から削除します。領域が不足すると、必ずファイルが削除されるため、バックアップとバックアップの間で、どのファイルがフラッシュ・リカバリ領域に残るかを予測することは困難です。
次の計画は、定期的に取られたデータベースの全体バックアップに基づいています。データベースの全体バックアップ間で約半数のデータ・ブロック変更される場合、または変更されるデータ・ブロックの数がデータベースの全体バックアップ間で大きく異なる場合に有効です。
計画は、データベースの増分更新バックアップベースの全体バックアップに基づいており、毎週ロールフォワードされます。この計画には、データベースのレベル0のディスク・コピー増分バックアップと、過去7日分のデータ・ファイルの変更で毎週日曜日に作成されるレベル1の増分が必要です。ロールフォワードの後、フラッシュ・リカバリ領域の内容はテープにバックアップされるため、データベースのレベル0の増分コピーおよびレベル1の毎週の増分バックアップは、ディスクおよびテープの両方で使用可能になります。
アーカイブREDOログ・ファイルは、毎日フラッシュ・リカバリ領域に蓄積されます。毎日スクリプトを実行するたびに、これらのREDOログ・ファイルはテープにバックアップされます。その後、フラッシュ・リカバリ領域が不足すると、これらのファイルはディスクから削除されます。
この例でのフラッシュ・リカバリ領域の最小ディスク割当て制限は、次の式で計算されます。
Disk Quota = Size of 1 copy of the database + Size of 1 level 1 incremental backup with Y days of changes + Size of (Y+1) days of archived redo logs
この場合、Yは、フラッシュ・リカバリ領域をテープにバックアップする間隔(日数)です。
この例では、Y=7であるため、ディスク割当て制限は、データベースの1つのコピー、レベル1の7日間の増分バックアップ、8日分のアーカイブREDOログを足したサイズになります。
この計画で、毎週日曜日にバックアップを実行するスクリプトは、次のようになります。
# Execute once a week # Roll forward the whole copy of the database to last incremental backup SCN RECOVER COPY OF DATABASE WITH TAG "whole_db_copy"; # Make an incremental backup of the database to the flash recovery area. BACKUP DEVICE TYPE DISK INCREMENTAL LEVEL 1 FOR RECOVER OF COPY WITH TAG "whole_db_copy" DATABASE; # Back up flash recovery area to tape BACKUP RECOVERY AREA; # delete obsolete backups on tape DELETE OBSOLETE DEVICE TYPE sbt;
この計画で、毎日実行するスクリプトは、次のようになります。
# Execute 6 days/wk # Back up flash recovery area to tape BACKUP RECOVERY AREA; # delete obsolete backups on tape DELETE OBSOLETE DEVICE TYPE sbt;
次の表に、スクリプトによるリカバリ期間の保持方法を示します。この例では、週は日曜日に始まると想定しています。
データベースのコピーを保持するためのディスク割当て制限が十分でない場合、フラッシュ・リカバリ領域をアーカイブ・ログの格納先としてのみ使用する必要があります。ディスク割当て制限規則によって、これらのログは、(すでにテープにバックアップ済などの理由で)不要になるとフラッシュ・リカバリ領域から削除されます。他のファイルを格納するための領域がフラッシュ・リカバリ領域に不足した場合に、アーカイブ・ログをフラッシュ・リカバリ領域から削除するには、アーカイブ・ログを毎日テープにバックアップします。
この計画では、フラッシュ・リカバリ領域のサイズは、2日分以上のアーカイブREDOログと1日分の増分バックアップを保持できる大きさにする必要があります。
この計画では、増分更新バックアップは使用しませんが、レベル0とレベル1の増分バックアップに基づいています。この計画では、2つのスクリプトを使用します。1つは毎週(日曜日など)実行し、もう1つは、1つ目のスクリプトを実行した日以外(月曜日〜土曜日)に実行します。
毎週実行するスクリプトは、テープにレベル0の増分バックアップを作成します。このバックアップには、データベースの内容すべてが含まれます。
1つ目のスクリプトを実行する日以外に実行するスクリプトは、レベル1の増分バックアップを作成します。このバックアップには、データベースへの毎日の変更が含まれます。
次に、各週の1日目に1回実行するスクリプトを示します。
# Execute only once a week # backup database to tape BACKUP DEVICE TYPE sbt INCREMENTAL LEVEL 0 DATABASE; # delete obsolete backups on tape DELETE OBSOLETE DEVICE TYPE sbt; # backup recovery file destination to tape BACKUP RECOVERY AREA;
次のスクリプトは、2日目以降の毎日(月曜日〜土曜日)実行します。
# backup recovery file destination to tape BACKUP RECOVERY AREA; # Take incremental backups to flash recovery area BACKUP DEVICE TYPE DISK INCREMENTAL LEVEL 1 DATABASE;
次の表に、Recovery Managerの保存方針のリカバリ期間の保持方法と、ディスク割当て制限の保持方法を示します。毎日スクリプトを実行した後も存在するリカバリ・ファイルがテープに存在するため、Oracleでは、必要に応じて、フラッシュ・リカバリ領域からファイルを削除します。
|
![]() Copyright © 2006 Oracle Corporation. All Rights Reserved. |
|