Hitachi

OpenTP1 Version 7 分散トランザクション処理機能 TP1/Financial Service Platform 使用の手引


5.4.5 トランザクション

〈この項の構成〉

(1) トランザクションの種類

OBM実行時にUAPが起動されるトランザクションの種類を次の表に示します。

表5‒13 トランザクションの種類

項番

トランザクション名

内容

1

オープントランザクション

OBM実行のための初期設定をするためのトランザクションです。

2

ノーマルトランザクション

バッチデータを処理するトランザクションです。

3

クローズトランザクション

OBMの実行結果の確認や,使用した資源の解放などをするためのトランザクションです。

(2) トランザクションの正常終了/異常終了

ここではまずOBMトランザクションの正常終了と異常終了の定義をします。

OBMのトランザクションの正常終了とは,UAPリターン後にトランザクションがこコミット決着することです。連鎖モードのcommit(ee_trn_chained_commit関数)を実行してもOBMのトランザクションが正常終了したとは見なされません。

OBMのトランザクションの異常終了とは,次のどれかの場合です。

連鎖モードのrollback(プロセスおよびスレッドを強制終了させないee_trn_chained_rollback)を実行してもOBMのトランザクションが異常終了したとは見なしません。

連鎖モードのcommit,連鎖モードのrollbackを実行してもUAPリターン後の同期点処理の結果で正常終了か異常終了かが決まります。

なお,OBMのサービスがスレッドダウンによって異常終了してもOBMのサービスは閉塞しません。

図5‒21 OBMでのCOMMIT制御系APIとトランザクション決着の関係

[図データ]

(3) トランザクションの詳細

(a) オープントランザクション

OBM実行のための初期設定をするためのトランザクションです。オープントランザクションを開始するとサービス関数を呼び出します。サービス関数には,OBM名,バッチ形態などをトランザクションインタフェースに設定して渡します。サービス関数の入力情報の詳細および使用できるAPIについては,マニュアル「TP1/Financial Service Platform プログラム作成の手引」を参照してください。

オープントランザクションが正常終了するとバッチ処理が開始されます。

起動契機

OBM開始コマンドを実行しOBM開始/再開始UOCが正常終了すると起動されます。

ただし,OBMの状態が実行中の場合に,計画停止または強制停止状態のロットを再開始するために,ロット名を指定してOBM開始コマンドを実行したときは,オープントランザクションは起動されません。

UAPが起動されるサーバ

BCSで起動されます。

登録するトランザクションレベル

トランザクションレベル方式の処理キュー登録機能を使用する場合は,定義によって登録するトランザクションレベルを設定,またはOBMのトランザクションレベル名判定UOCによって設定します。

起動するサービス関数

起動するサービス関数は,定義によって設定します。OBMサービス名決定UOCは使用しません。

異常終了時の動作

オープントランザクションが異常終了した場合は次の動作をします。1.,2.は,順番に実行されます。3.は,1.,2.とは非同期に実行するため実行順番は保証しません。

  1. 終了UOCを起動します。

  2. OBM開始コマンドが異常終了します。

  3. 障害の内容に応じてE3,またはERを起動します。ただし,UAPでee_trn_rollback_mark関数を実行した場合はどちらも起動されません。

    図5‒22 オープントランザクションの異常終了時の動作

    [図データ]

(b) ノーマルトランザクション

バッチデータを処理するためのトランザクションです。ノーマルトランザクションを開始するとサービス関数を呼び出します。サービス関数には,OBM名,バッチ形態,ロット名,処理済み件数などをトランザクションインタフェースに設定して渡します。データ型OBMの場合は,バッチデータも渡します。サービス関数の入力情報の詳細,および使用できるAPIについては,マニュアル「TP1/Financial Service Platform プログラム作成の手引」を参照してください。

ノーマルトランザクションが正常終了すると,バッチデータは処理済みとなります。

起動契機

OBMオープントランザクションが正常終了すると起動されます。バッチデータがすべて処理済みになる(データ型OBMの場合)か,終了要求を発行するまで繰り返し起動されます。また,ロットスケジュール方式,同時実行数などの定義に従い,同時に複数起動されます。

UAPが起動されるサーバ

BCSで起動されます。トランザクションレベル方式の処理キュー登録機能を使用する場合は,定義によって登録するトランザクションレベルを設定,またはOBMのトランザクションレベル名判定UOCによって設定します。

起動するサービス関数

定義で設定するか,OBMノーマルトランザクション名決定UOCで決定するかを選択できます。

異常終了時の動作

データ型OBMではノーマルトランザクションが異常終了した場合に,バッチデータを処理済みとするか,未処理とするかを定義で選択できます。どちらの場合も次の動作をしてOBMを強制停止します。

1.,2.,3.は順番に実行されます。4.は,1.,2.,3.とは非同期に実行するため実行順番は保証しません。

  1. クローズトランザクションを起動します。

  2. 終了UOCを起動します。

  3. OBM開始コマンドが異常終了します。

  4. 障害の内容に応じて,E3またはERを起動します。ただし,UAPでee_trn_rollback_mark関数を実行した場合はどちらも起動されません。

    図5‒23 ノーマルトランザクション異常終了時の動作

    [図データ]

(c) クローズトランザクション

OBMの実行結果の確認や,使用した資源の解放などをするためのトランザクションです。クローズトランザクションを開始するとサービス関数を呼び出します。サービス関数には,OBM名,終了/停止要因,処理済み件数などをトランザクションインタフェースに設定して渡します。サービス関数の入力情報の詳細,および使用できるAPIについては,マニュアル「TP1/Financial Service Platform プログラム作成の手引」を参照してください。

クローズトランザクションが正常終了すると,OBM終了UOCが起動されます。

起動契機

起動契機は次のどれかです。どの契機で起動されたかは,トランザクションインタフェースに設定する終了/停止要因から判断できます。

  • バッチデータがすべて処理済みになります(データ型OBMの場合)。

  • 全ロットで終了要求を発行して処理済みになります(イベント型OBMの場合)。

  • ノーマルトランザクションが異常終了します。

  • OBM実行中状態でBCMのTP1/EEがプロセスダウンした場合に,TP1/EEを再開始してオンライン状態となります。

  • OBM強制終了コマンドを実行します。

  • OBM強制停止コマンドを実行します。

  • OBM計画停止コマンドを実行します(イベント型OBMの場合)。

  • OBM強制停止APIを実行します。

  • OBM計画停止APIを実行します(イベント型OBMの場合)。

同時に実行している複数のノーマルトランザクションが異常終了しても,クローズトランザクションは1回だけ起動されます。

BCSでノーマルトランザクション実行中にBCMとBCSの間で通信障害が発生した場合は,BCSノーマルトランザクションが終了する前にクローズトランザクションが実行されることがあります。クローズトランザクションがcommit決着したあとに終了したノーマルトランザクションは,ロールバック決着します。

BCSでクローズトランザクション実行中にBCMとBCSの間で通信障害が発生した場合や,BCMのTP1/EEがプロセスダウンした場合は,同じOBMのクローズトランザクションが別々のBCSで同時に起動されたりクローズトランザクション実行中にOBM停止UOCが実行されたりすることがあります。この場合は先に終了したトランザクションをコミット決着し,あとに終了したトランザクションはロールバック決着します。

UAPが起動されるサーバ

BCSで起動されます。ただし,クローズトランザクションを実行可能なBCSが存在しない場合は,BCMで起動します(OBM構成定義obmstart -t close_no_bcsオペランドによってクローズトランザクションを起動しないで一時休止中とすることもできます)。

図5‒24 クローズトランザクションの実行サーバ

[図データ]

登録するトランザクションレベル

トランザクションレベル方式の処理キュー登録機能を使用する場合は,定義によって登録するトランザクションレベルを設定,またはOBMのトランザクションレベル名判定によって設定します。

起動するサービス関数

起動するサービス関数は,定義によって設定します。OBMサービス名決定UOCは使用しません。

異常終了時の動作

クローズトランザクションが異常終了した場合は,定義で設定したリトライ回数に従い再度クローズトランザクションを起動します。定義で設定したリトライ回数だけリトライしてもクローズトランザクションが正常終了しなかった場合は,リトライを中止して,クローズトランザクションを起動しないでOBMを強制停止します。ただし,OBM管理表の障害によってクローズトランザクションが異常終了した場合,およびクローズトランザクションを起動するBCSが存在しない場合はOBMの状態を一時休止中に変更します。一時休止状態となった場合の対処方法の詳細は,「26.7.2 一時休止状態からの回復」を参照してください。

障害の内容に応じて,E3またはERを起動します。ただし,UAPでee_trn_rollback_mark関数を実行した場合はどちらも起動されません。クローズトランザクションのリトライとは非同期で起動されます。順番は保証しません。

図5‒25 クローズトランザクション異常終了時の動作

[図データ]

(4) トランザクションレベル

トランザクションレベル方式の処理キュー登録機能を使用する場合は,定義によって2つ設定するか,OBMのトランザクションレベル名判定UOCによって設定できます。また,トランザクションレベルの設定方法は,OBM単位に設定できます。

定義によって設定する場合は,バッチ業務の内容によって設定した2つのどちらのトランザクションレベルを使用するかを選択できます。また,コマンドによってトランザクションレベルを切り替えることができます。

OBMのトランザクションレベル名判定UOCによって設定する場合は,バッチ業務の内容によってユーザ任意のトランザクションレベルを設定できます。ただし,UOCを使用する場合は定義によるトランザクションレベルの指定およびコマンドによるトランザクションレベルの切り替えはできません。

これによって,オンライン業務への影響や,当日のバッチデータ量などを考慮した処理キューのスケジュールを行え,オンライン業務とバッチ業務を効率良く実行できます。

それぞれのキュー登録の概要を次に示します。

図5‒26 定義による設定

[図データ]

図5‒27 OBMのトランザクションレベル名判定UOCによる設定

[図データ]

(5) 連続異常終了監視

OBMノーマルトランザクションが異常終了をした場合,OBMノーマルトランザクションを再度起動します。データ型OBMの場合は,再度同じバッチデータを渡します。

OBMはOBMノーマルトランザクションが連続して異常終了してOBMノーマルトランザクションを再度起動した回数を監視します。

監視回数に達した場合の処理は,次から選択できます。

連続ロールバック回数は,次のどれかの場合にリセットします。

監視回数と監視回数に達した場合の動作は異常終了の要因によって次の定義で設定します。

表5‒14 異常終了の要因と監視回数定義の関係

項番

OBMノーマルトランザクション異常終了の要因

監視回数の定義

監視回数に達した場合の動作の定義

1

  • ee_trn_retry_rollback

    (TP1/EE内部で発行するee_trn_retry_rollbackを含む※1

TP1/EEサービス定義

trn_max_retry_count

またはservice_attr -rオプション

OBM構成定義

obmdef

-eオプション

rollbackオペランド

2

  • ee_trn_chained_rollback

    (EETRN_KILL, EETRN_ABRT)

  • ee_trn_rollback_mark

    (TP1/EE内部で発行するee_trn_rollback_markを含む※2

  • スレッドダウン

ロット構成定義

obmstartコマンド

-eオプション

rollbackオペランド

OBM構成定義

obmdef

-eオプション

rollbackオペランド

3

  • UAPリターン後の同期点処理障害

ロット構成定義

obmstartコマンド

-eオプション

errオペランド

OBM構成定義

obmdef

-eオプション

errオペランド

注※1

sdh_deadlock_modeにrollback_retryを設定し,SDBハンドラAPI(CBLEESDH)でデッドロックが発生した場合など。

注※2

sdh_deadlock_modeにrollback_markを設定し,SDBハンドラAPI(CBLEESDH)でデッドロックが発生した場合や,DBキュー制御API(CBLEEDBQ)で暗黙的ロールバックが発生した場合など。

異常終了後に処理済みとする処理

異常終了後にバッチデータを処理済みとする処理は,異常終了したノーマルトランザクションと同一のキューに登録したトランザクションで行います。このトランザクションではUAPは起動されません(TASKTMでは,ロット名,トランザクションレベル名,サービス名はノーマルトランザクションと同様に表示されます。トランザクションの状態には,UAP未起動のビットがONとなります)。このトランザクションがコミット決着するとバッチデータが処理済みとなりOBMを強制停止します。

なお,コミット決着できなかった場合は,処理済みとしないでOBMを強制停止します。また,ERを起動しUAPに通知します。OBMを再開始すると再度同じバッチデータを渡します。

コミット決着前にBCSのTP1/EEがプロセスダウンした場合は,TP1/EE再開始後のトランザクションの回復でコミット決着すると処理済みとなります。コミット決着しなかった場合は,処理済みとなりません。どちらの場合も,OBMを強制停止します。

(6) トランザクション間の情報の引き継ぎ

(a) ロットIDを用いたトランザクション間の情報の引き継ぎ

OBM開始/再開始UOCでは,ロットごとに任意のロットIDを設定できます。ロットIDは,ノーマルトランザクションで参照できます。OBM開始/再開始UOCでロットに割り当てたテーブルなどのリソースをロットIDで関連づけることによって,ノーマルトランザクションでそのリソースを参照,更新するなどの使い方ができます。