IMSDB-リカバリー

データベース管理者は、システム障害が発生した場合のデータベース回復を計画する必要があります。障害には、アプリケーションのクラッシュ、ハードウェアエラー、電源障害など、さまざまな種類があります。

シンプルなアプローチ

データベース回復へのいくつかの簡単なアプローチは次のとおりです-

  • 重要なデータセットの定期的なバックアップコピーを作成して、データセットに対して投稿されたすべてのトランザクションが保持されるようにします。

  • システム障害が原因でデータセットが破損している場合は、バックアップコピーを復元することでその問題を修正します。次に、蓄積されたトランザクションがバックアップコピーに再投稿され、最新の状態になります。

単純なアプローチのデメリット

データベースリカバリへの単純なアプローチの欠点は次のとおりです。

  • 蓄積されたトランザクションを再投稿するには、多くの時間がかかります。

  • 他のすべてのアプリケーションは、リカバリが完了するまで実行を待つ必要があります。

  • 論理インデックスとセカンダリインデックスの関係が関係している場合、データベースのリカバリはファイルのリカバリよりも時間がかかります。

異常終了ルーチン

DL / Iプログラムは、オペレーティングシステムによって直接実行されるのに対し、DL / Iプログラムは実行されないため、標準プログラムがクラッシュする方法とは異なる方法でクラッシュします。異常終了ルーチンを採用することにより、システムが干渉し、異常終了(ABEND)後に回復を実行できるようになります。異常終了ルーチンは以下のアクションを実行します-

  • すべてのデータセットを閉じます
  • キュー内の保留中のすべてのジョブをキャンセルします
  • 異常終了の根本原因を見つけるためにストレージダンプを作成します

このルーチンの制限は、使用中のデータが正確であるかどうかを保証しないことです。

DL / Iログ

アプリケーション・プログラムが異常終了した場合、アプリケーション・プログラムによって行われた変更を元に戻し、エラーを訂正して、アプリケーション・プログラムを再実行する必要があります。これを行うには、DL / Iログが必要です。DL / Iロギングに関する重要なポイントは次のとおりです-

  • DL / Iは、アプリケーションプログラムによって行われたすべての変更をログファイルと呼ばれるファイルに記録します。

  • アプリケーションプログラムがセグメントを変更すると、その前の画像と後の画像がDL / Iによって作成されます。

  • これらのセグメントイメージは、アプリケーションプログラムがクラッシュした場合に、セグメントを復元するために使用できます。

  • DL / Iは、先行書き込みロギングと呼ばれる手法を使用して、データベースの変更を記録します。ログ先行書き込みでは、データベースの変更は、実際のデータセットに書き込まれる前にログデータセットに書き込まれます。

  • ログは常にデータベースの前にあるため、リカバリユーティリティはデータベースの変更のステータスを判断できます。

  • プログラムがデータベースセグメントを変更するための呼び出しを実行すると、DL / Iがそのロギング部分を処理します。

回復–前方および後方

データベース回復の2つのアプローチは次のとおりです。

  • Forward Recovery − DL / Iは、ログファイルを使用して変更データを保存します。累積されたトランザクションは、このログファイルを使用して再転記されます。

  • Backward Recovery−後方回復は、バックアウト回復とも呼ばれます。プログラムのログレコードは逆方向に読み取られ、その影響はデータベースで逆になります。バックアウトが完了すると、データベースは障害発生前と同じ状態になります。その間、他のアプリケーションプログラムがデータベースを変更していないことを前提としています。

チェックポイント

チェックポイントは、アプリケーションプログラムによって行われたデータベースの変更が完全で正確であると見なされる段階です。以下にリストされているのは、チェックポイントについて注意すべき点です。

  • 最新のチェックポイントの前に行われたデータベースの変更は、後方リカバリによって元に戻されません。

  • 最新のチェックポイントの後にログに記録されたデータベースの変更は、フォワードリカバリ中にデータベースのイメージコピーに適用されません。

  • チェックポイント方式を使用すると、データベースは、リカバリプロセスが完了したときに、最新のチェックポイントでの状態に復元されます。

  • バッチプログラムのデフォルトでは、チェックポイントはプログラムの先頭です。

  • チェックポイントは、チェックポイント呼び出し(CHKP)を使用して確立できます。

  • チェックポイント呼び出しにより、チェックポイントレコードがDL / Iログに書き込まれます。

以下に示すのは、CHKP呼び出しの構文です。

CALL 'CBLTDLI' USING DLI-CHKP
                     PCB-NAME
                     CHECKPOINT-ID

2つのチェックポイント方法があります-

  • Basic Checkpointing −これにより、プログラマーは、DL / Iリカバリー・ユーティリティーがリカバリー処理中に使用するチェックポイント呼び出しを発行できます。

  • Symbolic Checkpointing−これは、拡張再起動機能と組み合わせて使用​​される高度な形式のチェックポイントです。シンボリックチェックポイントと拡張再起動を一緒に使用すると、アプリケーションプログラマはプログラムをコーディングして、チェックポイントの直後のポイントで処理を再開できるようになります。