回復ユーティリティ

回復ユーティリティの機能、およびその実行に必要な入力と JCL について説明します。
注: 回復ユーティリティを mfims imsdbu 関数として実行することもできます。詳細は、「Recover 関数」トピックを参照してください。
重要: データベースを正常に回復するには、前回のデータベース バックアップの後に発生したすべてのデータベース アクティビティのレコードを含んでいるすべてのフォワード回復ログ ファイルが存在する必要があり、回復ユーティリティではそれらのファイルが使用されます。ログ ファイルは回復で使用できるようにロック解除する必要があります。ログ ファイルをロック解除するには、それらのファイルを作成したサーバーを停止します。

回復ユーティリティでは、イメージ コピー データベースの復元、ハードウェア障害またはシステム障害の直前に実行された直近のデータベース更新の復元、指定した時点までに実行されたデータベース更新の復元を実行できます。

復元の完了時には回復ユーティリティ出力ファイルによって、回復されたデータベースごとに適用された更新の数が、指定した回復ログ ファイルごとに報告されます。更新には書き込み数、再書き込み数、削除数などが含まれます。

データベース イメージ コピー復元のために、回復ユーティリティは各データベース バックアップ ファイルの名前および場所を入力として受け入れます。オプションで、回復ユーティリティを実行する前にイメージ復元ユーティリティを実行し、データベース イメージ コピーを現在の場所にコピーします。データベースを最後に加えた変更内容で更新するには、該当するログ ファイル (複数可) が ES_IMS_TLOG_PATH 環境変数で指定したパス上に存在する必要があります。回復ユーティリティは、各データベースの回復に必要な該当するログ ファイルを判断します。

ユーティリティによって 200 までのデータベースを各 JCL ジョブで回復できます。ただし注意点として、任意のデータベースで日付およびタイムスタンプが他の指定したデータベースに比べて著しく古い場合は、時間節約のためにそのデータベースを他とは分けて回復することを推奨します。分けずに回復すると、ユーティリティによって大量のログ ファイルが不必要に処理され、効率性が低下する原因になります。

デフォルトでは、データベース フォワード回復ジョブの 1 回の実行で複数のデータベースを指定した場合に、指定したデータベースのうち回復できないものがあると、回復ユーティリティは残りのデータベースを回復しようとします。これは、必要なフォワード回復ログ ファイルが見つからない場合などに発生します。この場合、回復ユーティリティはすべてのログ ファイルが見つかったデータベースを回復します。ジョブが完了すると、回復されたデータベースおよび回復されなかったデータベースを示す情報が、ジョブ SYSOUT データセットに含まれます。

オプションで、最初のエラーを検出した時点で回復処理を中止するように指定できます。これを指定するには、キーワード ABEND を SYSIN JCL カードに続く最初の文として挿入します。ABEND キーワードを指定して回復処理でエラーが検出されると、どのデータベースも回復されません。

注: 回復前に現在のデータベースの状態を保持するには、回復ユーティリティを実行する前にそれらのデータベースを他の場所にコピーしてください。

回復ユーティリティは、フォワード回復ログ ファイルからの更新を適用する前に、DD 文に指定されたようにデータベース イメージを現在の場所にコピーします。JCL には以下が含まれます。

回復ユーティリティの実行に必要な完全な JCL の例を次に示します。

例 1 - データベース イメージ コピーおよびフォワード回復ログ ファイルのデータベース更新を復元

//RUNGDG JOB  'RECOVERY',CLASS=A,MSGCLASS=A
//*
//STOP01  EXEC PGM=MFDBUJCL,PARM='/STO DB BNKTXN'
//SYSOUT    DD SYSOUT=*
//STOP03  EXEC PGM=MFDBUJCL,PARM='/STO DB BNKCUST'
//SYSOUT    DD SYSOUT=*
//STOP04  EXEC PGM=MFDBUJCL,PARM='/STO DB BNKACC'
//SYSOUT    DD SYSOUT=*
//*
//*
//RECOVER EXEC PGM=MFDBUJCL,PARM='RECOVER,SERVER=IMSBANK'
//*
//SYSOUT   DD SYSOUT=*
//BNKIC1   DD DSN=BNKTXN.IC.GDG(0),DISP=OLD               
//BNKIC2   DD DSN=BNKTXNX1.IC.GDG(0),DISP=OLD               
//BNKIC3   DD DSN=BNKCUST.IC.GDG(0),DISP=OLD 
//BNKIC4   DD DSN=BNKACC.IC.GDG(0),DISP=OLD  
//BNKIC5   DD DSN=BNKTXNX2.IC.GDG(0),DISP=OLD          
//SYSIN    DD *
ABEND
BNKTXN         BNKIC1
BNKTXNX1     BNKIC2
BNKCUST       BNKIC3
BNKACC         BNKIC4
BNKTXNX2    BNKIC5
/*
//*  
//START01  EXEC PGM=MFDBUJCL,PARM='/STA DB BNKTXN'
//SYSOUT    DD SYSOUT=*
//START04  EXEC PGM=MFDBUJCL,PARM='/STA DB BNKCUST'
//SYSOUT    DD SYSOUT=*
//START05  EXEC PGM=MFDBUJCL,PARM='/STA DB BNKACC'
//SYSOUT    DD SYSOUT=*
//*

例 2 - フォワード回復ログ ファイルのデータベース更新のみを復元

//RUNGDG JOB  'RECOVERY',CLASS=A,MSGCLASS=A
//*
//STOP01  EXEC PGM=MFDBUJCL,PARM='/STO DB BNKTXN'
//SYSOUT    DD SYSOUT=*
//STOP03  EXEC PGM=MFDBUJCL,PARM='/STO DB BNKCUST'
//SYSOUT    DD SYSOUT=*
//STOP04  EXEC PGM=MFDBUJCL,PARM='/STO DB BNKACC'
//SYSOUT    DD SYSOUT=*
//*
//*
//RECOVER EXEC PGM=MFDBUJCL,PARM='RECOVER,SERVER=IMSBANK'
//*
//SYSOUT   DD SYSOUT=*
//SYSIN    DD *
ABEND
BNKTXN          
BNKTXNX1     
BNKTXNX2 
BNKCUST        
BNKACC          
/*
//*  
//START01  EXEC PGM=MFDBUJCL,PARM='/STA DB BNKTXN'
//SYSOUT    DD SYSOUT=*
//START04  EXEC PGM=MFDBUJCL,PARM='/STA DB BNKCUST'
//SYSOUT    DD SYSOUT=*
//START05  EXEC PGM=MFDBUJCL,PARM='/STA DB BNKACC'
//SYSOUT    DD SYSOUT=*
//*