CPTでページまたは記憶領域を一貫性のある状態としてリセットしても、実際の破損や非一貫性は解消されません。ただし、CPTでスナップショット・ファイルを一貫性のある状態にリセットすると、Oracle RMUによってスナップショット・ファイルが初期化され、実際の破損や非一貫性が解消されます。
内部データ構造をよく理解して、データベースに格納される情報を認識してから、RMU Set Corrupt_Pagesコマンドを使用してください。実際に破損している記憶領域または一貫性がない記憶領域のページを一貫性がある状態に設定しても、破損や非一貫性は解消されません。記憶領域の実際の破損ページまたは非一貫性ページを一貫性のある状態に設定し、そのようなページへのアクセスを続行すると、データベースが破損してリカバリできなくなることがあります。 RMU RestoreおよびRMU Recoverコマンドをまず使用してください。これらのコマンドは、通常の操作手順に組み込む必要があります。 |
このコマンドは、RdbALTERの2つの文MAKE CONSISTENTとUNCORRUPTに替わるものです。MAKE CONSISTENTおよびUNCORRUPTのRdbAlter文はどちらも、将来のバージョンでは削除される可能性がある廃止予定コマンドです。 |
記憶領域を領域ごとにバックアップ・ファイルからリストアすると、バックアップ操作以降に更新されたデータは反映されません。リストアされた領域のトランザクション・レベルは、データベースのトランザクション・レベルではなくバックアップ・ファイルのトランザクション・レベルを反映します。このため、リストアされた領域のトランザクション・レベルがデータベースのトランザクション・レベルと異なります。Oracle Rdbによって、記憶領域ファイルにフラグが設定され、この領域は一貫性がない状態としてマークされます。
領域ごとにリカバリを実行して、リストアされた領域のトランザクション・レベルをデータベースのトランザクション・レベルにアップグレードすることができます。(領域ごとにリストアするにはアフター・イメージ・ジャーナルを有効にする必要があります。)バックアップ操作以降にデータベースが更新されていないことが明らかであれば、RMU Set Corrupt_Pagesコマンドを使用して、フラグの設定を非一貫性から一貫性に変更します。
また、バッチ更新トランザクション・モードで1つ以上の記憶領域が開いた状態でSQLロールバックを試行すると、記憶領域が破損します。
RMU Set Corrupt_Pagesコマンドを使用すると、不確かな状態のデータベースにアクセスできます。したがって、破損している、または一貫性がない記憶領域や記憶領域ページを修正するためにこのコマンドを入力すると、次のメッセージと質問が表示されます。(破損している、または一貫性がないスナップショット・ファイルを修正するためにコマンドを入力した場合には、このメッセージは表示されません。)
***** WARNING! ***** Marking a storage area or page consistent does not remove the inconsistencies. Remove any inconsistencies or corruptions before you proceed with this action. Do you wish to continue? [N] |
RMU Set Corrupt_Pagesコマンドを使用すると、領域別リストア操作の後で必要なRMU Recoverコマンドを省くことができます。Oracle RMUによってリカバリ操作が不要かどうかを判別することはできませんが、ユーザーに情報がある場合があります。情報が確実である場合は、RMU Set Corrupt_Pagesコマンドを使用して破損ページを一貫性のある状態に設定することで、リカバリ操作の必要性を縮小することができます。同様に、Oracle RMUによって認識されない問題をユーザーが把握していることがあります。たとえば、ページに含まれる索引ノードのアクセスのたびに、バグチェック・ダンプが行われていることを見つける場合があります。RMU Set Corrupt_Pagesコマンドを使用して、このページを破損としてマークしてから、データベースの破損をリカバリする通常の手順に従います。
RMU Set Corrupt_PagesコマンドとConsistent修飾子で、実際の破損記憶領域ページを使用可能にすることはできません。通常の操作中に検出される破損記憶領域ページはCPTに記録され、多くの場合、チェックサム値が無効です。RMU Set Corrupt_PagesコマンドとConsistent修飾子を使用すると、指定したページがCPTから削除されますが、物理的には破損したままであるため、次にユーザーがその記憶領域ページにアクセスしようしたときに再びCPTに記録されます。実際に破損している記憶領域ページを修正するには、バックアップ・ファイルからリストアする必要があります。
RMU Set Corrupt_PagesコマンドとConsistent修飾子を使用しても、スナップショット・ファイルの実際に破損したページまたは一貫性のないページを使用可能にすることはできません。このコマンドを使用して、Area修飾子にスナップショット・ファイルを指定すると、指定したスナップショット・ファイルがOracle RMUによって初期化されます。
root-file-spec
破損した状態または一貫性のある状態に設定するページまたは領域に対応するデータベース・ルート・ファイルのファイル指定。
Area=identity
特定の記憶領域ファイルまたはスナップショット・ファイルを指定します。記憶領域のIDには、領域名(たとえばEMPIDS_OVER)または記憶領域ID番号(たとえば5)のいずれかを指定できます。スナップショット・ファイルのIDには、スナップショット・ファイルのID番号を指定する必要があります。RMU DumpコマンドとHeader修飾子を使用すると、記憶領域ファイルまたはスナップショット・ファイルに関連付けられているID番号が表示されます。Area修飾子とPage=(n,...)修飾子を一緒に使用すると、指定した記憶領域またはスナップショット・ファイルの指定したページがコマンドによって指定されます。Area修飾子を指定してPage修飾子を指定しないと、指定した記憶領域またはスナップショット・ファイルのすべてのページがコマンドによって指定されます。
Area修飾子はDisk修飾子と一緒に使用できません。
Consistent
Page、AreaまたはDisk修飾子で指定するページ、領域またはスナップショット・ファイルが、データベースのその他の部分と一貫性があるとみなされることを指定します。データベースの記憶領域やページが破損していないが一貫性がない場合に、記憶領域または記憶領域のページを一貫性のある状態にすると、警告が返され、操作の実行リクエストの確認を求められます。確認後に操作が完了します。
Consistent修飾子をCorrupt修飾子と一緒に使用することはできません。
Corrupt
Page、AreaまたはDisk修飾子で指定するページ、領域またはスナップショット・ファイルが、破損しているとみなされることを指定します。Corrupt修飾子をConsistent修飾子と一緒に使用することはできません。
Disk=device
指定したディスク上のすべてのページ、すべての記憶領域およびすべてのスナップショット・ファイルを、CorruptまたはConsistent修飾子の指定どおりに設定することを指定します。Disk修飾子をPageまたはArea修飾子と一緒に使用することはできません。
Page=(n,...)
リストのページ番号を指定します。Page修飾子を使用するときはArea修飾子を指定する必要があります。
Page修飾子をDisk修飾子と一緒に使用することはできません。
- データベースでRMU Set Corrupt_Pagesコマンドを使用するには、データベースのルート・ファイルのアクセス制御リスト(ACL)にRMU$ALTER、RMU$BACKUPまたはRMU$RESTORE権限が必要です。または、OpenVMS SYSPRVまたはBYPASS権限が必要です。
- RMU Set Corrupt_Pagesコマンドは、ユーザーがデータベースにアタッチしていても発行できます。
- RMU Set Corrupt_Pagesコマンドを使用するときは、CorruptまたはConsistent修飾子(いずれか)を指定する必要があります。
- RMU Set Corrupt_Pagesコマンドを使用して、破損した状態または一貫性がある状態としてページをマークすると、データベースは変更されたとしてマークされます。
例1次のコマンドは、mf_personnelデータベースの記憶領域EMPIDS_MIDを破損として設定します。
$ RMU/SET CORRUPT_PAGES/AREA=EMPIDS_MID/CORRUPT MF_PERSONNEL %RMU-I-AREAMARKED, Area 4 was marked corrupt.
例2
次のコマンドは、EMPIDS_MIDを一貫性がある状態としてマークします。これは、例1で破損としてマークされた領域です。ただし、この例ではOracle RMUコマンドで記憶領域名を使用するかわりに、記憶領域識別子を使用します。
$ RMU/SET CORRUPT_PAGES/AREA=4/CONSISTENT MF_PERSONNEL ***** WARNING! ***** Marking a storage area or page consistent does not remove the inconsistencies. Remove any inconsistencies or corruptions before you proceed with this action. Do you wish to continue? [N] Y %RMU-I-AREAMARKED, Area 4 was marked consistent .
例3
次のコマンドは、mf_personnelデータベースの領域3のページ1を破損としてマークします。RMU Show Corrupt_Pagesコマンドを使用して、予期したとおりにページがマークされていることを確認します。
$ RMU/SET CORRUPT_PAGES/AREA=3/PAGE=1/CORRUPT MF_PERSONNEL %RMU-I-PAGEMARKED, Page 1 in area 3 was marked corrupt. $ RMU/SHOW CORRUPT_PAGES MF_PERSONNEL.RDB *-------------------------------------------------------------------- * Oracle Rdb V7.0-00 3-JUL-1996 17:01:20.62 * * Dump of Corrupt Page Table * Database: USER1:[DB]MF_PERSONNEL.RDB;1 * *-------------------------------------------------------------------- Entries for storage area EMPIDS_LOW ----------------------------------- Page 1 - AIJ recovery sequence number is -1 - Live area ID number is 3 - Consistency transaction sequence number is 0:0 - State of page is: corrupt *-------------------------------------------------------------------- * Oracle Rdb V7.0-00 3-JUL-1996 17:01:20.82 * * Dump of Storage Area State Information * Database: USER1:[DB]MF_PERSONNEL.RDB;1 * *-------------------------------------------------------------------- All storage areas are consistent.
例4
次の例は、EMPIDS_OVERのスナップショット・ファイルのページ4を一貫性がある状態として設定します。Set Corrupt_Pagesコマンドに指定したスナップショット・ファイルがOracle RMUによって初期化されるため、スナップショット・ファイルが破損ページ表から削除され、使用可能になります。
$ RMU/SET CORRUPT_PAGES MF_PERSONNEL.RDB/AREA=14/PAGE=3/CONSISTENT %RMU-I-PAGEMARKED, Page 3 in area 14 was marked consistent.