この章では、データベース・ファイルおよびバックアップの整合性をチェックする方法について説明します。この章の内容は次のとおりです。
この項では、RMANで検証を行う場合の基本的な概念およびタスクについて説明します。
RMANの検証は、ブロックが破損していないか、およびファイルが欠落していないかどうかを確認することを主な目的としています。また、RMANを使用して、バックアップがリストア可能かどうかを確認することもできます。RMANの次のコマンドを使用すると、検証を実行できます。
VALIDATE
BACKUP ... VALIDATE
RESTORE ... VALIDATE
関連項目:
|
バックアップ・ファイルが使用できなくなったり、リストアされたデータファイルが破損する可能性がある操作は防止されます。データベースは、自動的に次の処理を実行します。
データファイルのリストアまたはリカバリ中、そのファイルへのアクセスをブロックします。
各データファイルのリストア操作を、一度に1つのみ許可します。
増分バックアップが適切な順序で適用されることを確認します。
バックアップ・ファイルに情報を格納して、破損の検出を可能にします。
破損を検出するとすぐに通知できるように、ブロックが読取りまたは書込みされるたびにブロックを確認します。
破損ブロックとは、変更が行われたため、Oracle Databaseでの検出時に予測される内容とは異なる内容になっているブロックのことです。ブロックの破損は、次に示す様々な障害によって発生する可能性があります。ただし、原因はこれらに限定されるわけではありません。
ディスクおよびディスク・コントローラの障害
メモリー障害
Oracle Databaseソフトウェアの不具合
DB_BLOCK_CHECKSUM
は、(バックアップ内ではなく)データベース内のデータファイルおよびオンラインREDOログ・ファイルのブロックに対するチェックサムの書込みを制御するデータベース初期化パラメータです。DB_BLOCK_CHECKSUM
がtypical
に設定されている場合、データベースは、通常の操作中に各ブロックのチェックサムを計算し、ヘッダーにその値を格納してからブロックをディスクに書き込みます。データベースは、後でディスクからブロックを読み取る場合、チェックサムを再計算し、格納されている値と比較します。値が一致しなかった場合、そのブロックは破損しています。
デフォルトでは、BACKUP
コマンドは、各ブロックのチェックサムを計算し、その値をバックアップに格納します。DB_BLOCK_CHECKSUM
は、バックアップ内ではなくデータベース内のデータファイルに適用される初期化パラメータであるため、BACKUP
コマンドではこの値は無視されます。
物理的な破損(メディア破損とも呼ばれます)の場合、ブロックがデータベースで認識されません。チェックサムが無効か、ブロック内容がすべて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
オプションを指定する。
SET MAXCORRUPT
コマンドを使用すると、RMANバックアップで1つのファイルに許容されるマーク解除された破損の合計数を設定できます。デフォルトは0(ゼロ)です。つまり、RMANはいずれの種類のマーク解除された破損ブロックも許容しません。
マーク解除された破損ブロックがバックアップ中に検出された際にMAXCORRUPT
の制限を超えていると、RMANはバックアップを終了します。これ以外の場合、RMANは、ブロックが破損とマークされていることを示す特別なヘッダーを付けて、新しく検出された破損ブロックをバックアップに書き込みます。VALIDATE
コマンドを使用すると、すでに破損とマークされているブロックを特定でき、また、以前にマーク解除された破損ブロックを検出できます。
RMANはバックアップで、以前にマークされた破損ブロックを許容します。また、以前にマーク解除された破損ブロックを、そのバックアップで破損とマークすることを許容するようにRMANに指示することができます(MAXCORRUPT
を使用する場合)。そのため、破損とマークされた複数のブロックが含まれるデータファイルをリストアすることができます。(新たな破損が発生していないと想定して)リストアされたこのデータファイルをバックアップする場合、MAXCORRUPT
設定がなくても、バックアップは正常に実行されます。これは、以前にマークされた破損は、RMANによるバックアップの完了を妨害しないためです。
関連項目: SET MAXCORRUPTの構文については、 『Oracle Databaseバックアップおよびリカバリ・リファレンス』 を参照してください。 |
Oracle Databaseでは、ブロックの破損を検出、修復および監視する様々な方法がサポートされています。方法は、破損がブロック間の破損かブロック内の破損かによって異なります。ブロック内の破損は、ブロック自体内で発生します。この破損は、物理的な破損または論理的な破損のいずれかです。ブロック間の破損の場合、論理的な破損のみがブロック間で発生します。
たとえば、V$DATABASE_BLOCK_CORRUPTION
ビューではブロック内の破損が記録され、自動診断リポジトリ(ADR)ではすべてのタイプの破損が追跡されます。表16-1に、データベースで様々なタイプのブロック破損を処理する方法を示します。
表16-1 ブロックの破損の検出、修復および監視
対策 | ブロック内の破損 | ブロック間の破損 |
---|---|---|
検出 |
RMAN( |
DBVERIFYおよび |
追跡 |
|
データベースは、ADRでこのタイプのブロック破損を監視します。 |
修復 |
修復方法には、ブロック・メディア・リカバリ、データファイルのリストア、増分バックアップによるリカバリおよびブロックの新規作成などがあります。ブロック・メディア・リカバリでは、物理的な破損は修復できますが、論理的な破損は修復できません。 修復を行うかブロックが修復されたことを検出するすべてのRMANコマンドによって、 |
ブロック間の破損は、オブジェクトの削除、索引の再構築などの手動による方法で修正する必要があります。 |
VALIDATE
コマンドを使用すると、データベース・ファイル内の物理的および論理的な破損を手動で確認できます。このコマンドでは、BACKUP VALIDATE
と同じタイプのチェックが実行されますが、VALIDATE
では、より広範囲のオブジェクトをチェックできます。たとえば、VALIDATE DATAFILE ... BLOCK
コマンドを使用すると、個々のブロックを検証できます。
すべてのファイルを検証する場合、RMANによって、入力ファイルのすべてのブロックが確認されます。バックアップの検証によって、以前にマーク解除された破損ブロックが検出された後、RMANは破損を示している行を反映してV$DATABASE_BLOCK_CORRUPTION
ビューを更新します。
バックアップ・セット内の1つ以上のバックアップ・ピースが欠落または破損している可能性がある場合は、VALIDATE BACKUPSET
を使用します。このコマンドでは、バックアップ・セット内のすべてのブロックがチェックされ、バックアップがリストア可能かどうかが確認されます。ブロックの破損が検出されると、エラーが発行されて検証が停止されます。VALIDATE BACKUPSET
コマンドでは、ユーザーがチェック対象のバックアップを選択できます。これに対して、RESTORE
コマンドのVALIDATE
オプションでは、RMANによって選択が行われます。
VALIDATEを使用してデータベース・ファイルおよびバックアップを確認する手順
RMANを起動し、ターゲット・データベースに接続します。
必要なオプションを指定してVALIDATE
コマンドを実行します。
たとえば、データファイル、制御ファイルおよび(使用されている場合は)サーバー・パラメータ・ファイルをすべて検証するには、次のコマンドをRMANのプロンプトで実行します。
RMAN> VALIDATE DATABASE;
また、次の例に示すコマンド形式を使用すると、特定のバックアップ・セットを検証することもできます(出力例も示します)。
RMAN> VALIDATE BACKUPSET 22; Starting validate at 17-AUG-06 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/2007_08_16/o1_mf_nnndf_TAG20070816T153034_2g774bt2_.bkp channel ORA_DISK_1: piece handle=/disk1/oracle/work/orcva/RDBMS/backupset/2007_08_16/o1_mf_nnndf_TAG20070816T153034_2g774bt2_.bkp tag=TAG20070816T153034 channel ORA_DISK_1: restored backup piece 1 channel ORA_DISK_1: validation complete, elapsed time: 00:00:01 Finished validate at 17-AUG-06
次の例に、データファイル内の個々のデータ・ブロックを調べて破損を確認する方法を示します。
RMAN> VALIDATE DATAFILE 1 BLOCK 10; Starting validate at 17-AUG-06 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-06
データファイルの検証のパラレル化
大規模なデータファイルを検証する必要がある場合、RMANは、そのファイルを複数のセクションに分割し、各ファイル・セクションをパラレルに処理することによって、作業をパラレル化できます。複数のチャネルが構成されているか、または割り当てられている場合にチャネルで検証をパラレル化するには、VALIDATEコマンドのSECTION SIZE
パラメータを指定します。
ファイルのサイズより大きいセクション・サイズを指定した場合、RMANはファイル・セクションを作成しません。小さなセクション・サイズを指定した結果、セクションの数が256を超えると、RMANは、正確に256になる値までセクション・サイズを増やします。
データファイルの検証をパラレル化する手順
RMANを起動し、ターゲット・データベースに接続します。ターゲット・データベースは、マウントまたはオープンされている必要があります。
SECTION SIZE
パラメータを指定してVALIDATE
を実行します。
次の例では、2つのチャネルを割り当て、大規模なデータファイルを検証します。セクション・サイズは1200MBです。
RUN { ALLOCATE CHANNEL c1 DEVICE TYPE DISK; ALLOCATE CHANNEL c2 DEVICE TYPE DISK; VALIDATE DATAFILE 1 SECTION SIZE 1200M; }
関連項目:
|
BACKUP VALIDATE
コマンドを使用すると、次の操作を実行できます。
データファイルのブロックの物理的および論理的な破損の確認
すべてのデータベース・ファイルが存在するかどうか、および格納場所が正しいかどうかの確認
BACKUP
VALIDATE
を実行すると、RMANは、実際のバックアップ時と同様に、バックアップするファイル全体を読み取ります。ただし、実際には、バックアップ・セットもイメージ・コピーも作成しません。
BACKUPSET
パラメータ、MAXCORRUPT
パラメータまたはPROXY
パラメータは、BACKUP VALIDATE
を指定して使用することはできません。特定のバックアップ・セットを検証するには、VALIDATE
コマンドを実行します。
BACKUP VALIDATEコマンドを使用してファイルを検証する手順
RMANを起動し、ターゲット・データベースおよびリカバリ・カタログ(使用している場合)に接続します。
BACKUP VALIDATE
コマンドを実行します。
たとえば、次の例のようにコマンドを実行すると、すべてのデータベース・ファイルおよびアーカイブ・ログがバックアップ可能かどうかを検証できます。このコマンドは物理的な破損のみ確認します。
BACKUP VALIDATE DATABASE ARCHIVELOG ALL;
物理的な破損に加えて論理的な破損も確認するには、前述のコマンドを次のように少し変更して実行します。
BACKUP VALIDATE CHECK LOGICAL DATABASE ARCHIVELOG ALL;
前述の例では、RMANクライアントは、実際にファイルをバックアップしたときと同じ出力を表示します。RMANは、ファイルを1つもバックアップできない場合、エラー・メッセージを発行します。たとえば、次のように表示されます。
RMAN-00571: =========================================================== RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS =============== RMAN-00571: =========================================================== RMAN-03002: failure of backup command at 08/29/2007 14:33:47 ORA-19625: error identifying file /oracle/oradata/trgt/arch/archive1_6.dbf ORA-27037: unable to obtain file status SVR4 Error: 2: No such file or directory Additional information: 3
関連項目:
|
RESTORE
...
VALIDATE
を実行すると、RMANで特定のファイルまたはファイル・セットをバックアップからリストアできるかどうかがテストされます。RMANによって、使用するバックアップが選択されます。
このコマンドでは、データベースがマウントまたはオープンされている必要があります。データファイルのリストアの検証時にデータファイルをオフラインにする必要はありません。データファイルのバックアップの検証は、バックアップを読み取るのみで、本番データファイルには影響しないためです。
ディスクまたはテープのファイルを検証する場合、RMANは、バックアップ・ピースまたはイメージ・コピー内のすべてのブロックを読み取ります。また、RMANは、オフサイトのバックアップの検証も行います。この検証は、RMANによって出力ファイルが書き込まれないことを除き、実際のリストア操作と同じです。
注意: RECOVER ... TESTコマンドを使用して、試行リカバリ を実行するテスト方法もあります。試行リカバリでは、通常のリカバリと同じ方法でREDOが適用されますが、これはメモリー内のみで行われ、変更は試行後にロールバックされます。 |
RESTORE
コマンドを使用してバックアップを検証する手順
VALIDATE
オプションを指定してRESTORE
コマンドを実行します。
次に、データベースおよびすべてのアーカイブREDOログのリストアの検証例を示します。
RESTORE DATABASE VALIDATE; RESTORE ARCHIVELOG ALL VALIDATE;
RMANのエラー・スタックが表示されない場合は、後続の手順をスキップします。エラー・メッセージが表示されないということは、実際のリストアおよびリカバリ中にこれらのバックアップを正常に使用できることがRMANで確認されたということを意味しています。
出力内にエラー・メッセージおよびRMAN-06026
メッセージが表示された場合は、問題の原因を調査します。可能な場合は、RMANによるバックアップの検証を妨げている問題を解決し、検証を再試行します。
次のエラーは、RMANが、指定した1つ以上のファイルを使用可能なバックアップからリストアできないことを意味します。
RMAN-06026: some targets not found - aborting restore
次の出力例は、指定したバックアップの読取りでRMANが問題を検出したことを示しています。
RMAN-03009: failure of restore command on c1 channel at 12-DEC-06 23:22:30 ORA-19505: failed to identify file "oracle/dbs/1fafv9gl_1_1" ORA-27037: unable to obtain file status SVR4 Error: 2: No such file or directory Additional information: 3
関連項目: RESTORE ... VALIDATEコマンドの詳細は、『Oracle Databaseバックアップおよびリカバリ・リファレンス』 を参照してください。 |