iSeriesC でのリカバリーとデータベース保全性に関する考慮事項

EGL プログラムは、iSeriesC 環境で DB2® が提供するすべてのリカバリー機能およびデータ保全機能を使用できます。

DB2 プログラムに影響するコミットメント制御の問題のほとんどは、ネイティブ・データベースの場合の問題と同様です。このセクションでは、いくつかの相違点について説明します。

DB2 データベースは、リカバリー可能リソースです。プログラムがコミットメント制御 (CRTSQLCBLI (SQL ILE COBOL オブジェクト作成) コマンドで *NONE 以外に設定された COMMIT パラメーター) を使用して準備されており、プログラムによって DB2 表が変更された場合、変更はデータベースにコミットされます。 ジョブまたは活動化グループの終了時、または明示的/暗黙的 EGL のコミットの実行時に、データベースに変更がコミットされます。暗黙的および明示的なコミットメント制御について詳しくは 、iSeriesC データベースのコミットメント制御に関する考慮事項を参照してください。

STRCMTCTL (コミットメント制御開始) コマンドの CMTSCOPE (コミット・スコープ) パラメーターにより、コミット制御範囲が *JOB または *ACTGRP に定義されます。1 番目の SQL ステートメントの実行時に STRCMTCTL コマンドがまだ発行されていない場合は、DB2 がこのコマンドを発行します。同様に、コミット範囲が完了すると、DB2 は ENDCMTCTL (コミットメント制御終了) コマンドを発行します。作業論理単位 (LUW) の終了前、または明示的な EGL ロールバックが要求される前に、プログラムが異常終了すると、LUW 開始以降に行われたすべての変更がバックアウトされます。

EGL DB2 プログラムのコミットメント制御は、CRTSQLCBLI コマンドの COMMIT パラメーターによって制御されます。 *NONE が指定されている場合、プログラムはコミットメント制御下で実行されません。 EGL プログラムが execute ステートメントで SQL DROP COLLECTION、GRANT、または REVOKE コマンドを発行する場合は、*NONE を指定する必要があります。

EGL DB2 準備スクリプト FDAPREP の COMMIT パラメーターのデフォルト値は *CHG です。このスクリプトを変更して、EGL プログラムの生成中に、ユーザー・シンボリック・パラメーター (symparm) によりコミット値が設定されるようにできます。このスクリプト変更により、複数のプログラム間で COMMIT 値を容易に変更できるようになります。 スクリプトの変更について詳しくは、「EGL 生成ガイド」を参照してください。DB2 を使用したコミットメント制御は、このセクションで説明した内容を除いては、ネイティブ・データベース・ファイルを使用したコミットメント制御と同じです。


フィードバック