16 データベース・ファイルおよびバックアップの検証
RMANのVALIDATE
コマンドを使用すると、データベース・ファイルおよびバックアップの整合性を確認できます。
16.1 RMANの検証の概要
検証により、バックアップの整合性を確認できます。
16.1.1 RMANの検証の目的
RMANの検証は、ブロックが破損していないか、およびファイルが欠落していないかどうかを確認することを主な目的としています。また、RMANを使用して、バックアップがリストア可能かどうかを確認することもできます。
RMANの次のコマンドを使用すると、検証を実行できます。
-
VALIDATE
-
BACKUP ... VALIDATE
-
RESTORE ... VALIDATE
関連項目:
-
VALIDATE
の構文については、Oracle Databaseバックアップおよびリカバリ・リファレンスを参照してください。 -
RESTORE ... VALIDATE
の構文については、Oracle Databaseバックアップおよびリカバリ・リファレンスを参照してください。
16.1.2 RMANの検証の基本的な概念
バックアップ・ファイルが使用できなくなったり、リストアされたデータファイルが破損する可能性がある操作は防止されます。
データベースは、自動的に次の処理を実行します。
-
データファイルのリストアまたはリカバリ中、そのファイルへのアクセスをブロックします。
-
各データファイルのリストア操作を、一度に1つのみ許可します。
-
増分バックアップが適切な順序で適用されることを確認します。
-
バックアップ・ファイルに情報を格納して、破損の検出を可能にします。
-
破損を検出するとすぐに通知できるように、ブロックが読取りまたは書込みされるたびにブロックを確認します。
16.1.2.1 チェックサムおよび破損ブロックについて
破損ブロックとは、変更が行われたため、Oracle Databaseでの検出時に予測される内容とは異なる内容になっているブロックのことです。
ブロックの破損は、次に示す様々な障害によって発生する可能性がありますが、原因はこれらに限定されるわけではありません。
-
ディスクおよびディスク・コントローラの障害
-
メモリー障害
-
Oracle Databaseソフトウェアの不具合
DB_BLOCK_CHECKSUM
は、(バックアップ内ではなく)データベース内のデータファイルおよびオンラインREDOログ・ファイルのブロックに対するチェックサムの書込みを制御するデータベース初期化パラメータです。DB_BLOCK_CHECKSUM
がtypical
に設定されている場合、データベースは、通常の操作中に各ブロックのチェックサムを計算し、ヘッダーにその値を格納してからブロックをディスクに書き込みます。データベースは、後でディスクからブロックを読み取る場合、チェックサムを再計算し、格納されている値と比較します。値が一致しなかった場合、そのブロックは破損しています。
デフォルトでは、BACKUP
コマンドは、各ブロックのチェックサムを計算し、その値をバックアップに格納します。DB_BLOCK_CHECKSUM
が適用されるのは、バックアップではなくデータベースのデータファイルであるため、この初期化パラメータの値は、BACKUP
コマンドでは無視されます。
16.1.2.2 物理および論理ブロック破損について
物理的な破損(メディア破損とも呼ばれます)の場合、ブロックがデータベースで認識されません。チェックサムが無効か、ブロック内容がすべて0(ゼロ)か、またはブロックのヘッダーとフッターが一致していません。
注意:
デフォルトでは、BACKUP
コマンドは、各ブロックのチェックサムを計算し、その値をバックアップに格納します。NOCHECKSUM
オプションを指定すると、バックアップの作成時にRMANはブロックのチェックサムを実行しません。
論理的な破損の場合、ブロックの内容は論理的に一貫性のない状態になっています。論理的破損の例として、行の一部や索引エントリの破損があげられます。RMANは、論理的な破損を検出すると、アラート・ログおよびサーバー・セッションのトレース・ファイルにそのブロックを記録します。
デフォルトでは、RMANは、論理的な破損を確認しません。ただし、BACKUP
コマンドでCHECK LOGICAL
を指定すると、RMANは、データおよび索引ブロックをテストして、行ピースまたは索引エントリの破損などの論理的な破損がないかどうかを調べ、その結果を自動診断リポジトリ(ADR)内のアラート・ログに記録します。ファイルのバックアップ時またはリストア時に、RMANを次の構成で使用すると、RMANは、検出可能なすべてのタイプのブロック破損を検出します。
-
データベースがデータファイルのチェックサムを(バックアップに対してではなく、データベースで使用中のデータファイルに対して)自動的に計算するように、データベースの初期化パラメータ・ファイルで
DB_BLOCK_CHECKSUM=typical
を設定する。 -
RMANがマーク解除されたブロック破損を許容しないように、
BACKUP
コマンドの前にSET MAXCORRUPT
を使用しない。 -
バックアップの書込み時にRMANがチェックサムを計算するように、
BACKUP
コマンドにNOCHECKSUM
オプションを指定しない。 -
RMANが物理的な破損と論理的な破損を確認するように、
BACKUP
コマンドおよびRESTORE
コマンドにCHECK
LOGICAL
オプションを指定する。
16.1.2.3 RMANバックアップの破損ブロックの制限について
SET MAXCORRUPT
コマンドを使用すると、RMANバックアップで1つのファイルに許容されるマーク解除された破損の合計数を設定できます。デフォルトは0(ゼロ)です。つまり、RMANはいずれの種類のマーク解除された破損ブロックも許容しません。
マーク解除された破損ブロックがバックアップ中に検出された際にMAXCORRUPT
の制限を超えていると、RMANはバックアップを終了します。これ以外の場合、RMANは、ブロックが破損とマークされていることを示す特別なヘッダーを付けて、新しく検出された破損ブロックをバックアップに書き込みます。VALIDATE
コマンドを使用すると、破損とマークされているブロックを特定でき、また、マーク解除された破損ブロックを検出できます。
破損とマークされた複数のブロックが含まれるデータファイルをリストアすることができますが、これは、RMANがバックアップで、マークされた破損ブロックを許容するため、また、RMANがマーク解除された破損ブロックを、そのバックアップで破損とマークすることを許容する指示を受け取ることができる(MAXCORRUPT
を使用する場合)ためです。(新たな破損が発生していないと想定して)リストアされたこのデータファイルをバックアップする場合、MAXCORRUPT
設定がなくても、バックアップは正常に実行されます。これは、以前にマークされた破損は、RMANによるバックアップの完了を妨害しないためです。
関連項目:
SET MAXCORRUPT
の構文については、Oracle Databaseバックアップおよびリカバリ・リファレンスを参照してください。
16.1.2.4 ブロック破損の検出について
Oracle Databaseでは、ブロックの破損を検出、修復および監視する様々な方法がサポートされています。
方法は、破損がブロック間の破損かブロック内の破損かによって異なります。ブロック内の破損は、ブロック自体内で発生します。この破損は、物理的な破損または論理的な破損のいずれかです。ブロック間の破損の場合、論理的な破損のみがブロック間で発生します。
たとえば、V$DATABASE_BLOCK_CORRUPTION
ビューではブロック内の破損が記録され、自動診断リポジトリ(ADR)ではすべてのタイプの破損が追跡されます。表16-1に、データベースで様々なタイプのブロック破損を処理する方法を示します。
表16-1 ブロックの破損の検出、修復および監視
レスポンス | ブロック内の破損 | ブロック間の破損 |
---|---|---|
検出 |
RMAN( |
DBVERIFYおよび |
追跡 |
|
データベースは、ADRでこのタイプのブロック破損を監視します。 |
修復 |
修復方法には、ブロック・メディア・リカバリ、データファイルのリストア、増分バックアップによるリカバリおよびブロックの新規作成などがあります。ブロック・メディア・リカバリでは、物理的な破損は修復できますが、論理的な破損は修復できません。 修復を行うかブロックが修復されたことを検出するすべてのRMANコマンドによって、 |
ブロック間の破損は、オブジェクトの削除、索引の再構築などの手動による方法で修正する必要があります。 |
関連項目:
-
ADRについては、Oracle Database管理者ガイドを参照してください。
16.2 VALIDATEコマンドによるブロック破損の確認
VALIDATE
コマンドを使用すると、データベース・ファイル内の物理的および論理的な破損を手動で確認できます。
このコマンドでは、BACKUP VALIDATE
と同じタイプのチェックが実行されますが、VALIDATE
では、より広範囲のオブジェクトをチェックできます。たとえば、VALIDATE DATAFILE ... BLOCK
コマンドを使用すると、個々のブロックを検証できます。
検証するバックアップ・ピースのコピー数を指定するには、VALIDATE FROM COPY NUMBER
コマンドを実行します。
すべてのファイルを検証する場合、RMANによって、入力ファイルのすべてのブロックが確認されます。バックアップの検証によって、以前にマーク解除された破損ブロックが検出された後、RMANは破損を示している行を反映してV$DATABASE_BLOCK_CORRUPTION
ビューを更新します。
バックアップ・セット内の1つ以上のバックアップ・ピースが欠落または破損している可能性がある場合は、VALIDATE BACKUPSET
を使用します。このコマンドでは、バックアップ・セット内のすべてのブロックがチェックされ、バックアップがリストア可能かどうかが確認されます。RMANはブロックの破損を検出すると、エラーを発行し、検証を終了します。VALIDATE BACKUPSET
コマンドでは、ユーザーがチェック対象のバックアップを選択できます。これに対して、RESTORE
コマンドのVALIDATE
オプションでは、RMANによって選択が行われます。
VALIDATEを使用してデータベース・ファイルおよびバックアップを確認する手順
-
RMANを開始し、RMANによるデータベース接続の確立の説明に従って、
SYSBACKUP
またはSYSDBA
権限を持つ共通ユーザーとしてターゲット・データベースのルートに接続します。 -
必要なオプションを指定して
VALIDATE
コマンドを実行します。たとえば、データベース内のデータファイル、制御ファイル(および使用されている場合はサーバー・パラメータ・ファイル)をすべて検証するには、次のコマンドをRMANのプロンプトで実行します。
RMAN> VALIDATE DATABASE;
また、次の例に示すコマンド形式を使用すると、特定のバックアップ・セットを検証することもできます(出力例も示します)。
RMAN> VALIDATE BACKUPSET 22; Starting validate at 17-AUG-13 using channel ORA_DISK_1 allocated channel: ORA_SBT_TAPE_1 channel ORA_SBT_TAPE_1: SID=89 device type=SBT_TAPE channel ORA_SBT_TAPE_1: Oracle Secure Backup channel ORA_DISK_1: starting validation of datafile backup set channel ORA_DISK_1: reading from backup piece /disk1/oracle/work/orcva/RDBMS/backupset/2013_08_16/o1_mf_nnndf_ TAG20130816T153034_2g774bt2_.bkp channel ORA_DISK_1: piece handle=/disk1/oracle/work/orcva/RDBMS/backupset/2013_08_16/o1_mf_nnndf_ TAG20130816T153034_2g774bt2_.bkp tag=TAG20130816T153034 channel ORA_DISK_1: restored backup piece 1 channel ORA_DISK_1: validation complete, elapsed time: 00:00:01 Finished validate at 17-AUG-13
次の例に、データファイル内の個々のデータ・ブロックを調べて破損を確認する方法を示します。
RMAN> VALIDATE DATAFILE 1 BLOCK 10; Starting validate at 17-AUG-13 using channel ORA_DISK_1 channel ORA_DISK_1: starting validation of datafile channel ORA_DISK_1: specifying datafile(s) for validation input datafile file number=00001 name=/disk1/oracle/dbs/tbs_01.f channel ORA_DISK_1: validation complete, elapsed time: 00:00:01 List of Datafiles ================= File Status Marked Corrupt Empty Blocks Blocks Examined High SCN ---- ------ -------------- ------------ --------------- ---------- 1 OK 0 2 127 481907 File Name: /disk1/oracle/dbs/tbs_01.f Block Type Blocks Failing Blocks Processed ---------- -------------- ---------------- Data 0 36 Index 0 31 Other 0 58 Finished validate at 17-AUG-13
データファイルの検証のパラレル化
大規模なデータファイルを検証する必要がある場合、RMANは、そのファイルを複数のセクションに分割し、各ファイル・セクションをパラレルに処理することによって、作業をパラレル化できます。複数のチャネルが構成されているか、または割り当てられている場合にチャネルで検証をパラレル化するには、VALIDATE
コマンドのSECTION SIZE
パラメータを指定します。
ファイルのサイズより大きいセクション・サイズを指定した場合、RMANはファイル・セクションを作成しません。小さなセクション・サイズを指定した結果、セクションの数が256を超えると、RMANは、正確に256になる値までセクション・サイズを増やします。
データファイルの検証をパラレル化する手順
関連項目:
-
VALIDATE
コマンドの詳細は、Oracle Databaseバックアップおよびリカバリ・リファレンスを参照してください。
16.2.1 PDBの検証
PDBの検証には複数の方法があります。
次の方法のいずれかを使用して、PDBを検証します。
-
rootに接続し、
VALIDATE PLUGGABLE DATABASE
またはRESTORE PLUGGABLE DATABASE VALIDATE
コマンドを使用します。こうすると、1つ以上のPDBを検証できます。rootに接続している場合、次のコマンドでPDB
hr_pdb
およびsales_pdb
が検証されます。VALIDATE PLUGGABLE DATABASE hr_pdb, sales_pdb;
-
PDBに接続し、
VALIDATE DATABASE
およびRESTORE DATABASE VALIDATE
コマンドを使用して1つのPDBのみを検証します。ここで使用するコマンドは、データベース全体の場合に使用するコマンドと同じです。PDBに接続している場合、次のコマンドでこのデータベースのリストアが検証されます。
RESTORE DATABASE VALIDATE;
関連項目:
16.3 BACKUP VALIDATEを使用したデータベース・ファイルの検証
BACKUP VALIDATE
コマンドを使用して検証を実行することもできます。
このコマンドでは次のタスクを実行できます。
-
データファイルのブロックの物理的および論理的な破損の確認
-
すべてのデータベース・ファイルが存在するかどうか、および格納場所が正しいかどうかの確認
BACKUP VALIDATE
を実行すると、RMANは、実際のバックアップ時と同様に、バックアップするファイル全体を読み取ります。ただし、実際には、バックアップ・セットもイメージ・コピーも作成しません。
BACKUPSET
パラメータ、MAXCORRUPT
パラメータまたはPROXY
パラメータは、BACKUP VALIDATE
を指定して使用することはできません。特定のバックアップ・セットを検証するには、VALIDATE
コマンドを実行します。
BACKUP VALIDATEコマンドを使用してファイルを検証する手順
関連項目:
-
BACKUP
の構文については、Oracle Databaseバックアップおよびリカバリ・リファレンスを参照してください。 -
BACKUP
VALIDATE
で検出される破損ブロックの修復の詳細は、「ブロック・メディア・リカバリの実行」を参照してください
16.4 リストアする前のバックアップの検証
RESTORE...VALIDATE
を実行して、RMANでバックアップから特定のファイルまたはファイルのセットをリストアできるかどうかをテストできます。RMANによって、使用するバックアップが選択されます。
このコマンドでは、データベースがマウントまたはオープンされている必要があります。データファイルのバックアップの検証ではバックアップが読み取られるだけで、本番データファイルには影響を与えないため、データファイルのリストアの検証時にデータファイルをオフラインにする必要はありません。
ディスクまたはテープのファイルを検証する場合、RMANは、バックアップ・ピースまたはイメージ・コピー内のすべてのブロックを読み取ります。また、RMANは、オフサイトのバックアップの検証も行います。この検証は、RMANによって出力ファイルが書き込まれないことを除き、実際のリストア操作と同じです。
また、RMANでは、検証するバックアップ・ピースのコピー数を指定することもできます。
注意:
RECOVER ... TEST
コマンドを使用して、試行リカバリを実行するテスト方法もあります。試行リカバリでは、通常のリカバリと同じ方法でREDOが適用されますが、これはメモリー内のみで行われ、変更は試行後にロールバックされます。
RESTOREコマンドを使用してバックアップを検証する手順
関連項目:
RESTORE...VALIDATE
コマンドの詳細は、Oracle Databaseバックアップおよびリカバリ・リファレンスを参照してください。