DB バッチ処理

DB バッチ処理に関する以下の説明は、 このバッチ・プログラムがご使用のアプリケーションにとって適切であるかどうかを判断するのに役立ちます。

DB バッチ・プログラムがアクセスできるデータ

DB バッチ・プログラムは、全機能データベース、 Db2 for z/OS® データベース、GSAM データベース、および z/OS ファイルにアクセスできます。 DB バッチ・プログラムは、DEDB や MSDB にはアクセスできません。

DB バッチ処理の使用

バッチ・プログラムは通常、オンライン・プログラムよりも長時間稼働する プログラムです。 多量のデータベースを更新する場合や、報告書を印刷する場合にバッチ・プロ グラムを使用します。 バッチ・プログラムは、単独で稼働する (データベースなどのリソースを他のプログラムと競合することがない) ため、制御領域から独立して実行できます。 データ共用を使用する場合は、DB バッチ・プログラムとオンライン・プログラムは全機能データベースに同時にアクセスできます。 バッチ・プログラムには、以下のような特徴があります。

  • 通常、報告書などの多量の出力を作成します。
  • 別のプログラムやユーザーによって実行されることはありません。 バッチ・プログラムは、通常、特定の時間間隔でスケジュールされ(例えば、 週ごとに)、JCL を使用して始動します。
  • 早急には必要ない出力を作成します。 バッチ出力のターンアラウンド・タイムは、オンライン・プログラムのよう に重要ではありません。

DB バッチ・プログラムのリカバリー

バッチ・プログラムにチェックポイントを組み込み、障害が起こった場合にプログラムを再起動します。

チェックポイントの発行

バッチ・プログラム内でチェックポイントを出して、データベース変更をコミットし、プログラムを再始動する場所を設けてください。 バッチ・プログラムにおいては、MPP、トランザクション指向の BMP、および IFP の場合とは異なり、コミット・ポイントは自動的には起こらないため、 バッチ・プログラム内でチェックポイントを出すことは重要です。

チェックポイントを出すことは、オンライン・システムとデータを共用している バッチ・プログラムでは特に重要です。 チェックポイントによってリソースが開放され、オンライン・プログラムがリソースを使用 できるようになります。 作成するすべてのバッチ・プログラムに最初からチェックポイントを 組み込んでおく必要があります。 その時点ではチェックポイントのサポートが必要ないかもしれませんが、後でチ ェックポイントを組み込むよりも、あらかじめ組み込んでおいたほうが簡単で す。 また、バッチ・プログラムから BMP に変換したり、データを共用したい場合 があるかもしれません。

チェックポイント (あるいはその他のシステム・サービス呼び出し) を出す場合、 プログラムに I/O PCB を指定する必要があります。 I/O PCB を得るには、プログラムの PSB 内で、 PSBGEN ステートメントに CMPAT=YES を指定して、互換性オプションを使用します。

GSAM DB はバックアウトされませんが、XRST 呼び出しを介した BMP の再始動プロセス中に再配置されます。 XRST 呼び出しは、データ・セット・ポインターを呼び出しで指定されたチェックポイント ID に再配置します。 アプリケーションは、起動されると、そのポイントから開始されて先へ進みます。 XRST 呼び出しで指定されたチェックポイント ID は、動的バックアウトまたはバッチ・バックアウトのいずれかによる非 GSAM DB のバックアウト先と同じ ID であることが必要です。

推奨: DB バッチ・プログラムによって使用される PSB の場合は、常に CMPAT = YES を指定してください。
データベース変更のバックアウト

DB バッチ・プログラムが異常終了した場合にどのような事態が起こるかは、 システム・ログのためのストレージ・メディアのタイプによって異なります。 DASD (直接アクセス・ストレージ・デバイス) またはテープのいずれかにシステム・ログを保管するように指定できます。

DASD 上のシステム・ログ

システム・ログが DASD に保管されている場合は、BKO 実行パラメーターを使用して、最後のコミット・ポイント以降にプログラムがデータベースに行った変更を IMS が動的にバックアウトするように指定できます。

関連資料: BKO 実行パラメーターの使用法については、「 IMS Version 15.3 System Definition」を参照してください。

データベース変更を動的にバックアウトすると、次のような利点があります。

  • 障害が起きたプログラムによってアクセスされたデータを、すぐに他のプ ログラムで使用することができます。 バッチ・バックアウトを使用すると、データベース変更をバックアウトするために IMS バッチ・バックアウト・ユーティリティーが実行されるまで、他のプログラムはデータにアクセスできません。
  • データを共用している 2 つのプログラムがデッドロックされた場合、そ のうちの 1 つは処理を続行することができます。 動的バックアウトではなく、 バッチ・バックアウトを使用した場合は、プログラムは両方とも失敗します。

IMS は、 IMS検出の障害が発生したとき (例えば、デッドロックが検出されたとき) に、バッチ・プログラムの動的バックアウトを実行します。 DASD へのロギングを行うことにより、バッチ・プログラムが SETSROLB、および ROLS システム・サービス呼び出しを 出すことが可能になります。 これらの呼び出しにより、 IMS はプログラムが行った変更を動的にバックアウトします。

関連資料: SETSROLB、および ROLS 呼び出しについては、「 IMS バージョン 15.3 データベース管理」のデータベースのリカバリーおよびデータベース保全性の維持に関する情報を参照してください。

テープ上のシステム・ログ

バッチ・アプリケーション・プログラムが異常終了し、バッチ・システム・ログがテープに保管されている場合は、 IMS バッチ・バックアウト・ユーティリティーを使用して、データベースに対するプログラムの変更をバックアウトする必要があります。