回復ユーティリティでは、イメージ コピー データベースの復元や、ハードウェア障害またはシステム障害の直前に実行された直近のデータベース更新の復元を実行できます。
復元の完了時には回復ユーティリティ出力ファイルによって、回復されたデータベースごとに適用された更新の数が、指定した回復ログ ファイルごとに報告されます。更新には書き込み数、再書き込み数、削除数などが含まれます。
データベース イメージ コピー復元のために、回復ユーティリティは各データベース バックアップ ファイルの名前と場所を入力用として受け入れます。オプションで、回復ユーティリティを実行する前にイメージ復元ユーティリティを実行し、データベース イメージ コピーを現在の場所にコピーします。データベースを最後に加えた変更内容で更新するには、該当するログ ファイル (複数可) が ES_IMS_TLOG_PATH 環境変数で指定したパス上に存在する必要があります。回復ユーティリティは、各データベースの回復に必要な該当するログ ファイルを判断します。
ユーティリティによって 200 までのデータベースを各 JCL ジョブで回復できます。ただし注意点として、特定のデータベースで日付とタイムスタンプが他の指定したデータベースに比べて著しく古い場合は、時間節約のためにそのデータベースを他とは分けて回復することを推奨します。分けずに回復すると、ユーティリティによって大量のログ ファイルが不必要に処理され、効率性が低下する原因になります。
デフォルトで、1 回のデータベースのフォワード回復ジョブ実行で複数のデータベースを指定し、回復ユーティリティが指定データベースのうちいくつかを回復できない場合、ユーティリティは残りのデータベースを回復しようとします。これは、必要なフォワード回復ログ ファイルが見つからない場合などに発生します。この場合、回復ユーティリティはすべてのログ ファイルが見つかったデータベースを回復します。ジョブが完了すると、回復されたデータベースと回復されなかったデータベースを示す情報が、ジョブ SYSOUT データセットに含まれます。
オプションで、最初のエラーを検出した時点で回復処理を中止するように指定できます。これを指定するには、キーワード ABEND を SYSIN JCL カードに続く最初の文として挿入します。ABEND キーワードを指定して回復処理でエラーが検出されると、どのデータベースも回復されません。
回復ユーティリティは、フォワード回復ログ ファイルからの更新を適用する前に、DD 文に指定したようにデータベース イメージを現在の場所にコピーします。JCL には以下が含まれます。
//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'
//RECOVER EXEC PGM=MFDBUJCL,PARM='RECOVER,SERVER=IMSBANK'
//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
//SYSIN DD *
ABEND
BNKTXN
BNKTXNX1
BNKTXNX2
BNKCUST
BNKACC
回復ユーティリティの実行に必要な完全な 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=*
//*