リカバリー不能 リソース (Windows 2000 のシリアル・ファイルなど) を変更した場合、その変更は比較的永続的なものになります。コードでも EGL ランタイム・サービスでも、この変更結果を予告なく取り消すことはできません。 リカバリー可能 リソース (データベースなど) を変更した場合、コードまたは EGL ランタイム・サービスでは、変更をコミットして永続的なものにするか、変更をロールバックして、最後に変更がコミットされた時点で有効であった内容に戻すかのいずれかができます。
プログラムがトランザクション環境 (CICS、IMS、または iSeries®) で実行されている場合、 EGL は、実行単位内のすべてのリソース・マネージャー間およびすべてのプログラム間で調整された 2 フェーズ・コミットを実行する環境コミットを発行します。 非トランザクション環境では、EGL は各リカバリー可能リソース・マネージャーを別々に呼び出す単一フェーズ・コミットを 実行します。
ELARMIOP NLS=ENU,EOF=N,SCFOLD=Y,IMSESA=N,SEGMSG=N, X
MSGTRN=ELAE,TRBUF=64,TSQUE=32,RRSAF=Y
さらに詳しい説明は、DB2 RRSAF の資料にあります。
さらに詳しい説明は、DB2 RRSAF の資料にあります。
| プラットフォーム | 問題 |
|---|---|
| Java™ 生成 |
|
| CICS | CICS の実行単位では、一度に 1 つの DB2® UDB データベースのみを使用できます。以下のような自動処理が実行されます。
次の場合にコミットが発生します。
これらは、DL/I 処理に関連しています。
|
| IMS BMP | sysLib.commit() は、トランザクション指向の BMP プログラムでは無視されます。
これらのプログラムでは、get next 文を使用して入出力 PCB に関連付けられたシリアル・ファイルを読み取ります。
それらのプログラムの場合は、以下の任意の状態の場合にシステムがコミットを実行します。
GSAM ファイルは、基本 CHKP とともに使用すると、リカバリー不可になります。 GSAM ファイルをリカバリー可能にするには、シンボリック・チェックポイントに sysLib.commit() ではなく、dliLib.AIBTDLI()、dliLib.EGLTDLI()、または vgLib.VGTDLI() を使用します。 |
| IMS/VS | sysLib.commit() は無視されます。
コミット処理は、次のような暗黙的コミット点でのみ行われます。
作業論理単位に関しては、明示的なチェックポイント・コマンド (CHXP) を実行することにより、入出力 PCB に get unique (GU) 呼び出しが実行され、コミットが実行されます。
次の点に注意してください。
|
| iSeries COBOL | 暗黙的コミットは、以下の状況で発行されます。
プログラムが SQL 要求を発行した場合に sysLib.commit() を呼び出すと SQL COMMIT WORK 文が実行されます。 プログラムが SQL 要求を発行していない場合に、sysLib.commit()を呼び出した場合は、iSeries COMMIT コマンドに相当するものになります。 |
| z/OS® バッチ | プログラムが PSB は指定していないが、SQL 要求は発行した場合、sysLib.commit() を呼び出すと、SQL COMMIT WORK 文が実行されます。 プログラムで PSB を指定している場合、sysLib.commit() を呼び出すと DL/I 基本 CHKP 呼び出しが実行されます。 これにより、すべてのデータベースに対する変更がコミットされます。 dliLib.psbData.psbName 構造の内容が、CHKP 呼び出しでチェックポイント識別子として機能します。 GSAM ファイルは、基本 CHKP とともに使用すると、リカバリー不可になります。 GSAM ファイルをリカバリー可能にするには、シンボリック・チェックポイントに sysLib.commit() ではなく、dliLib.AIBTDLI()、dliLib.EGLTDLI()、または vgLib.VGTDLI() を使用します。 |