ジャーナルファイルの操作

このセクションは、ジャーナルのアクティビティを実行するルーチンについて説明します。利用可能なジャーナリング修飾子の説明は、この章の後に現れます。

ジャーナルメンテナンスのアクティビティは、通常、データベースのバックアップと同じ時間で発生するので、注意してください。

ジャーナルファイルの処理

MUPIP JOURNAL コマンドは、ジャーナルファイルの処理を開始します。キーの処理のアクティビティを実行するには、次のJOURNAL修飾子を使用します。

- EXTRACT:Mルーチンによって処理するには、ジャーナルファイルからファイルフォーマットへ情報を転送します。

- RECOVER:データベースファイルへ戻るジャーナルファイルに情報を転送します。

- SHOW:ジャーナルファイルについての情報の要約を報告します。

- VERIFY:ジャーナルの整合性を報告します。

インデックス付きのデータベースファイルとは異なり、ジャーナルファイルはシーケンシャルフォーマットがあります。そのため、破損したジャーナルは、損傷が最初に発生した位置に有効な情報を提供しますが、そして、いくつかのケースでもその位置を超えます。

破損したデータベースファイルの回復

次の2つのメソッドは、ジャーナルファイルからデータベースを復元することが可能です:

  • フォワードリカバリ(ロールフォワード)

  • バックワードリカバリ(ロールバック)

すべてのジャーナルファイルは、フォワードリカバリ(ロールフォワード)を許可します。MUPIP SET -JOURNAL=BEFORE_IMAGES で作成される唯一のジャーナルファイルは、バックワードリカバリ(ロールバック)をサポートします。

アクティブなデータベースは、MUPIP JOURNAL -RECOVER コマンドを使用してジャーナルファイルからリカバリします。 ;、、フォワードリカバリとして-FORWARD 修飾子を用い、または、バックワードリカバリとして-BACKWARD 修飾子を用いる。もし何かヘッドディスクの干渉のようなデータベースファイルの一部を破壊する場合は、-FORWARD のリカバリを使用すべきです、なぜならJOURNAL -RECOVER -BACKWARDは、有効な出発点ではないからです。

フォワードリカバリ

フォワードリカバリ手順は、データベースのバックアップコピーを復元し、そのデータベースファイルへジャーナルファイルに適用します。データベースと対応するジャーナルファイルの両方のための出発点は、同一でなければなりません。ジャーナルファイルは、各データベースの更新のコピーが含まれます。フォワードリカバリは、データベースのバックアップコピーの開始と更新から全体のジャーナルファイルを読み取ります。ジャーナルファイルの物理的な最後の前にジャーナル処理を停止するために、オプションで MUPIP JOURNAL -BEFORE= 修飾子を使用しているジャーナルの終了時を指定します。

ジャーナルファイルの先頭と復元されたデータベースの先頭とを正確に一致することを確実にするために、MUPIP BACKUPを使用します。

フォワードリカバリは、一般的に、バックワードリカバリよりも時間がかかります。しかし、現在のデータベースが破壊された場合は、フォワードリカバリを使用する必要があります。ジャーナルファイルがNOBEFORE_IMAGESを使用して作成された場合は、そのジャーナルはフォワードリカバリにのみ可能にします。

フォワードリカバリの例:

例: MUPIP JOURNAL -RECOVER

これは、forward ジャーナルファイル全体を処理する10:35のシステムクラッシュの後にある回復を示しています。

もともと10:30より後に発生した更新に処理が検出する時は、コマンドへ-BEFORE="- - 10:30" を追加することにより、リカバリを停止します。

バックワードリカバリ

バックワードリカバリは、ファイルの末尾から後方へ移動して、アクティブなデータベースへジャーナルファイルを適用します。バックワードリカバリは、"before-image(イメージの前)" ジャーナリングを使用します。"before-image" ジャーナリングと共に、GT.Mは、更新により引き起こされた直前の変更によりデータベースの一部の"スナップショット(snapshots)" だけでなく、データベースの更新を取得します。もしプロダクションDBが使用可能ならば、そしてもしBEFORE_IMAGES修飾子で指定されたジャーナルファイルを作成するされたMUPIP SETコマンドならば、JOURNAL -RECOVER -BACKWARD が唯一作業します。

効果的に、BEFORE_IMAGESが、それぞれのデータベース更新に先行する"mini-backups(ミニバックアップ)" を作成します。バックワードリカバリは、MUPIP JOURNALコマンドを使用する修飾子によって指定されるまで遡る時間内にデータベースを復元するための mini-backups(ミニバックアップ) を使用し、それによりデータベース更新をリプレイします。

MUPIP JOURNAL 修飾子 -SINCE=, -BEFORE=, -LOOKBACK_LIMIT= を持ってバックワードリカバリを使用して、回復するために時間のブロックを指定することができます。

[注意]

"before-image" ジャーナリングは、Mレベル(またはNOBEFORE)ジャーナリングよりも、より多くのディスクI/Oとストレージスペースが必要です。

-BACKWARD で回復したいデータベースを削除しないでください。回復は、既存の/使用されているデータベースに発生でのみできます。

再現されたデータベースのために、-RECOVER -FORWARD を使用してください。

バックワードリカバリの例:

これは、10:35のシステムクラッシュの後の回復を示しています。回復は、10:20へバックワードするデータベース更新を元に戻します"un-dose, undo"、それにより、クラッシュまで進み更新を適用します。もともと10:30より後に発生した更新に処理が検出する時は、コマンドへ-BEFORE="- - 10:30" を追加することにより、リカバリを停止します。もしアプリケーションに一連グループのトランザクションを囲む(fence) ZTSTARTコマンドとZTCOMMITコマンドが含まれている場合、10時20分に不完全な囲み済み(fenced)トランザクションを解決するために、10時10分の検索の前にバックワード処理を続行することができます。-LOOKBACK_LIMIT= 修飾子は、この場合10分間に、追加のバックワード処理の最大量を制御します。この例で、 -SINCE 時間は、若干のグラフィカルな表現のために誇張しています。注意してください。

壊れたトランザクションを回復する

致命的なイベントの場合、GT.Mがファイルへのすべてのジャーナルレコードの書き込みを適切に完了することは、ほとんどありません。MUPIP JOUNAL処理は、"壊れたトランザクション"として、未完のレコード、または、不完全に囲まれたトランザクションを、報告します。壊れたトランザクションは、ファイル(壊れたトランザクションファイル)に抽出されます。壊れたトランザクションが終わった時間に発生したいくつかの完全なトランザクションは、データベースとして役割を担っていないのではなく、しかしその代わりとして、別のファイル(失われたトランザクションファイル)へ失われたトランザクションとして取りだされます。操作手順とアプリケーションツールは、破損と失われたトランザクションファイル内の情報を、これらのファイルにコンテンツを配置するリカバリまたはロールバックの後に、回復および再処理する手段を提供する必要があります。

MUPIP JOURNALのため-ERROR_LIMIT= 修飾子は、継続する処理が可能です。エラーの数が指定された制限を超えるまでは、これは、オーバーエラーをスキップするために試します。1度-ERROR_LIMIT=制限が使い果たされると、MUPIP JOURNALのため-INTERACTIVE修飾子は、処理を継続するかどうか制御を操作させます。

回復後の処理

もし論理的なトランザクション周りの囲い込みを使用している場合は、いくつかの破壊または失われたトランザクションの再入力を開始します。もし囲い込みを使用しないならば、任意のアプリケーションレベルの整合性の問題を修復してください。いづれの場合においても、MUPIP INTEG -FASTは、データベースが相対的な安全で新しい更新をサポートができるかどうかを行う、すばらしく素早いテストを提供します。

inserted by FC2 system