トランザクションサービス定義
- 〈このページの構成〉
形式
set形式
set trn_tran_process_count=同時に起動するトランザクションブランチの数 〔set trn_recovery_process_count=並行回復プロセス数〕 〔set trn_expiration_time=トランザクションブランチ限界経過時間〕 〔set trn_expiration_time_suspend=Y|N|F〕 〔set trn_tran_statistics=Y|N〕 〔set trn_tran_recovery_list=Y|N〕 〔set trn_cpu_time=トランザクションブランチCPU監視時間〕 〔set trn_statistics_item=統計情報項目〔,統計情報項目〕…〕 〔set trn_max_subordinate_count=最大子トランザクションブランチ数〕 〔set trn_rm_open_close_scope=process|transaction〕 〔set trn_optimum_item=トランザクション最適化項目 〔,トランザクション最適化項目〕…〕 〔set trn_processing_in_rm_error=down|retry|force〕 〔set trn_recovery_list_remove=normal|force|no〕 〔set trn_recovery_list_remove_level=未決着トランザクション情報 ファイルの削除レベル〕 〔set trn_crm_use=Y|N〕 〔set trn_max_crm_subordinate_count=最大CRM経由 子トランザクションブランチ数〕 〔set trn_watch_time=トランザクション同期点処理時の最大通信待ち時間〕 〔set trn_rollback_information_put=no|self|remote|all〕 〔set trn_limit_time=トランザクションブランチ最大実行可能時間〕 〔set trn_rollback_response_receive=Y|N〕 〔set trn_partial_recovery_type=type1|type2|type3〕 〔set max_socket_descriptors=ソケット用ファイル記述子の最大数〕 〔set trn_recovery_failmsg_interval=仕掛中トランザクション情報 メッセージ間隔最小時間〕 〔set trn_wait_rm_open=continue|stop|retry_continue|retry_stop〕 〔set trn_retry_interval_rm_open=xa_open関数発行リトライ インタバル時間〕 〔set trn_retry_count_rm_open=xa_open関数発行リトライ回数〕 〔set thread_stack_size=OpenTP1内部で使用するスレッドスタック領域 のサイズ〕 〔set polling_control_data=Y|N〕 〔set thread_yield_interval=ソケットの再利用指示を受信できる契機を 与えるインタバル時間〕 〔set groups=グループ識別子〔,グループ識別子〕…〕 〔set trn_xar_use=Y|N〕 〔set trn_start_recovery_mode=stop|wait|continue〕 〔set trn_start_recovery_watch_time=リトライ経過時間〕 〔set trn_start_recovery_interval=リトライ間隔時間〕 〔set trn_xa_commit_error=down|force〕 〔set trn_prf_event_trace_level=TRNイベントトレースの取得レベル〕 〔set trn_prf_event_trace_condition=トレース取得種類 〔,トレース取得種類〕〕 〔set trn_completion_limit_time=トランザクション完了限界時間〕 〔set trn_extend_function=トランザクションサービスの機能の拡張レベル〕 〔set trn_rcv_open_close_scope=Y|N〕 〔set watch_time=最大応答待ち時間〕
コマンド形式
trnstring -n リソースマネジャ名 〔-i リソースマネジャ拡張子〔,リソースマネジャ拡張子〕…〕 〔-o "トランザクションサービス用xa_open関数用文字列"〕 〔-c "トランザクションサービス用xa_close関数用文字列"〕 〔-O "ユーザサーバ用xa_open関数用文字列"〕 〔-C "ユーザサーバ用xa_close関数用文字列"〕〔-d〕 〔-e〕〔-m〕〔-r〕〔-s〕
putenv形式
{{〔putenv 環境変数名 環境変数値〕}}
dcputenv形式
{{〔dcputenv 環境変数名 環境変数値〕}}
機能
トランザクション管理をするための実行環境を定義します。
説明
set形式のオペランド
●trn_tran_process_count=同時に起動するトランザクションブランチの数
〜〈符号なし整数〉((1〜8192※))
- 注※
-
MCFサービスを使用する場合の指定範囲は,次のとおりです。
-
32ビットの場合:((1〜7484))
-
64ビットの場合:((1〜6893))
-
同時に起動するトランザクションブランチの数を指定します。
トランザクション処理を実行するユーザサーバプロセス数,回復プロセス数,および回復処理を待っているトランザクションブランチ数の総数を指定します。
トランザクションブランチを発生させたユーザサーバプロセスが異常終了した場合,回復プロセスがほかのトランザクションブランチの決着を処理中のとき,このトランザクションブランチは回復処理を待っている状態になります。この状態が長く続くと起動できるトランザクションブランチ数が少なくなることがあります。
このため,異常終了後にトランザクションブランチを発生できるユーザサーバプロセスの扱いや,異常発生の頻度などを考慮してトランザクションブランチ数を設定する必要があります。指定数の目安を次に示します。
(トランザクション実行するユーザサーバプロセス数+回復プロセス数) <指定するトランザクションブランチ数 ≦(トランザクション実行するユーザサーバプロセス数×2+回復プロセス数)
なお,指定数が多くなればなるほどメモリ資源の効率が悪くなるので注意してください。
●trn_recovery_process_count=並行回復プロセス数
〜〈符号なし整数〉((1〜128))《4》
トランザクションブランチが異常終了した時に,トランザクションブランチの回復処理を並行してできる数を指定します。
トランザクションブランチが異常終了した場合は,ここで指定した数だけ並行してトランザクションブランチの回復処理をします。
●trn_expiration_time=トランザクションブランチ限界経過時間
〜〈符号なし整数〉((0〜65535))《0》(単位:秒)
トランザクションブランチの処理を監視する限界経過時間を指定します。指定時間を超えた場合は,このトランザクションブランチのプロセスは異常終了して,ロールバックされます。0を指定した場合は,時間監視しません。
UAPが異常終了した場合に閉塞するかどうかはholdオペランド,term_watch_timeオペランドの指定によります。詳細については,ユーザサービス定義のholdオペランドおよびterm_watch_timeオペランドの説明を参照してください。
なお,このオペランドは,ユーザサービス定義またはrapリスナーサービス定義,およびユーザサービスデフォルト定義でも指定できます。
指定値の優先順位は次のとおりです(1.>2.>3.)。
-
ユーザサービス定義またはrapリスナーサービス定義
-
ユーザサービスデフォルト定義
-
トランザクションサービス定義
また,これらの定義のほかに関数を発行して監視時間を指定することもできます。
関数の詳細については,マニュアル「OpenTP1 プログラム作成の手引」を参照してください。
トランザクショナルRPC実行プロセス(clttrnd)またはCUP実行プロセス(cltcond)で,この機能を有効にするには,クライアント環境定義またはクライアントサービス定義のtrn_expiration_timeオペランドを指定する必要があります。
- 注
-
トランザクションブランチ限界経過時間の精度は秒単位です。そのため,タイミングによっては,このオペランドに指定した値よりも最大約1秒長い時間でプロセスを強制停止することがあります。
●trn_expiration_time_suspend=Y|N|F
〜《N》
トランザクションブランチの処理を監視するとき,次の処理時間も監視時間に含むかどうかを指定します。
-
監視対象のトランザクションブランチが,RPC機能を使ってほかのトランザクションブランチを呼び出し,その処理が終わるのを待つ時間
-
連鎖RPCで呼び出されたサーバUAPが,次のサービス要求を待つ時間
-
監視対象のトランザクションブランチが,非同期RPCを使用してほかのトランザクションブランチを呼び出したあと,処理結果受信処理を行っている時間
なお,このオペランドは,ユーザサービス定義またはrapリスナーサービス定義,およびユーザサービスデフォルト定義でも指定できます。
指定値の優先順位は次のとおりです(1.>2.>3.)。
-
ユーザサービス定義またはrapリスナーサービス定義
-
ユーザサービスデフォルト定義
-
トランザクションサービス定義
このオペランドと各種タイマ監視との関係については,「付録A.2 トランザクションの時間監視」を参照してください。
トランザクショナルRPC実行プロセス(clttrnd)またはCUP実行プロセス(cltcond)で,この機能を有効にするには,クライアント環境定義またはクライアントサービス定義のtrn_expiration_time_suspendオペランドを指定する必要があります。
●trn_tran_statistics=Y|N
〜《N》
トランザクションブランチごとの統計情報を取得するかどうかを指定します。
Yを指定した場合,OpenTP1システムの起動後から停止までの間,ユーザサービス定義のtrn_statistics_itemオペランドで,nothing以外を指定されたユーザサーバが実行したトランザクションブランチの統計情報を取得します。
統計情報の取得開始または終了は,trnsticsコマンドでも指示できます。その場合このオペランドの指定は無効となります。
統計情報を取得する場合,取得情報の種類が多くなるほど,トランザクション性能が低下します。そのため,統計情報の取得は,システムチューニング時やトラブル調査時など,トランザクション性能に影響を与えてもかまわない場合だけにしてください。
●trn_tran_recovery_list=Y|N
〜《N》
OpenTP1システムの全面回復時に,未決着トランザクション情報を取得するかどうかを指定します。OpenTP1は,システムの全面回復のたびに$DCDIR/spool/dctrninfの下にファイルを作成して,この情報を出力します。不要となったファイルは削除してください。
- Y
-
未決着トランザクション情報を取得します。
- N
-
未決着トランザクション情報を取得しません。
●trn_cpu_time=トランザクションブランチCPU監視時間
〜〈符号なし整数〉((0〜65535))《0》(単位:秒)
トランザクションブランチが同期点処理までに使用できるCPU時間を指定します。0を指定した場合は,時間監視しません。指定時間を超えた場合は,該当するトランザクションブランチのプロセスを異常終了し,ロールバックします。
UAPが異常終了した場合に閉塞するかどうかはholdオペランド,term_watch_timeオペランドの指定によります。詳細については,ユーザサービス定義のholdオペランドおよびterm_watch_timeオペランドの説明を参照してください。
なお,このオペランドは,ユーザサービス定義またはrapリスナーサービス定義,およびユーザサービスデフォルト定義でも指定できます。
指定値の優先順位は次のとおりです(1.>2.>3.)。
-
ユーザサービス定義またはrapリスナーサービス定義
-
ユーザサービスデフォルト定義
-
トランザクションサービス定義
トランザクショナルRPC実行プロセス(clttrnd)またはCUP実行プロセス(cltcond)で,この機能を有効にするには,クライアント環境定義またはクライアントサービス定義のtrn_cpu_timeオペランドを指定する必要があります。
●trn_statistics_item=統計情報項目〔,統計情報項目〕…
〜《executiontime》
トランザクションブランチの統計情報を取得する項目を指定します。
- nothing
-
統計情報を取得しません。
- base
-
基本情報として,次の情報を取得します。
-
トランザクションブランチの識別子
-
トランザクションブランチの決着結果
-
トランザクションブランチの実行プロセス種別
-
トランザクションブランチの実行サーバ名
-
トランザクションブランチの実行サービス名
-
- executiontime
-
基本情報とトランザクションブランチの実行時間情報を取得します。
- cputime
-
基本情報とトランザクションブランチのCPU時間情報を取得します。
nothingの指定は,一つしかできません。また,nothingとほかの統計情報項目を同時に指定した場合,nothingの指定は無効になります。
トランザクションに関する統計情報を取得するときは次のどれかを指定してください。
-
trn_tran_statisticsオペランドにYを指定
-
trnsticsコマンドで-sオプションを指定
なお,このオペランドは,ユーザサービス定義またはrapリスナーサービス定義,およびユーザサービスデフォルト定義でも指定できます。
指定値の優先順位は次のとおりです(1.>2.>3.)。
-
ユーザサービス定義またはrapリスナーサービス定義
-
ユーザサービスデフォルト定義
-
トランザクションサービス定義
トランザクショナルRPC実行プロセス(clttrnd)またはCUP実行プロセス(cltcond)で,この機能を有効にするには,クライアント環境定義またはクライアントサービス定義のtrn_statistics_itemオペランドを指定する必要があります。
●trn_max_subordinate_count=最大子トランザクションブランチ数
〜〈符号なし整数〉((0〜1024))《32》
OpenTP1下の一つのトランザクションブランチから生成する子トランザクションブランチの最大数を指定します。この最大数は,一つのトランザクションブランチから発行するdc_rpc_call関数(ただし,呼び先で更新処理,またはUJ出力する)の最大数です。
●trn_rm_open_close_scope=process|transaction
〜《process》
OpenTP1以外が提供しているリソースマネジャに対して,XAインタフェースである二つの関数(xa_open関数とxa_close関数)の発行タイミングを指定します。
- process
-
dc_rpc_open関数発行時にxa_open関数を発行し,dc_rpc_close関数発行時にxa_close関数を発行します。
- transaction
-
トランザクション開始時にxa_open関数を発行し,トランザクション終了時にxa_close関数を発行します。
processを指定した場合は,dc_rpc_open関数の発行からdc_rpc_close関数の発行まで,リソースマネジャの資源を占有します。したがって,トランザクションの性能を重視する場合はprocessを指定してください。
また,transactionを指定した場合は,トランザクションの開始と終了ごとにxa_open関数,xa_close関数を発行します。したがって,リソースマネジャの資源を有効利用したい場合は,transactionを指定してください。
なお,このオペランドは,ユーザサービス定義およびユーザサービスデフォルト定義にも指定できます。
指定値の優先順位は次のとおりです(1.>2.>3.)。
-
ユーザサービス定義
-
ユーザサービスデフォルト定義
-
トランザクション定義
●trn_optimum_item=トランザクション最適化項目〔,トランザクション最適化項目〕…
〜《base》
複数のユーザサーバで構成されるグローバルトランザクションの性能を向上させるための最適化項目を,次の文字列で指定します。
- base
-
同期点処理全体(プリペア処理,コミット処理,およびロールバック処理)を最適化します。OpenTP1のトランザクション制御は2相コミット方式で実行しているため,二つのトランザクションブランチ間のコミット制御には,4回のプロセス間通信が必要となります。
次の条件をすべて満たす場合,親トランザクションブランチが子トランザクションブランチのコミット処理を代わりに実行することで,コミット制御で必要な4回のプロセス間通信を削減します。
-
親トランザクションブランチと,子トランザクションブランチが同一OpenTP1下にあること。
-
親トランザクションブランチが,子トランザクションブランチを同期応答型RPCで呼び出していること。
-
子トランザクションブランチでアクセスしたリソースマネジャのXAインタフェース用オブジェクトが,親トランザクションブランチにもリンケージされていること。
-
- asyncprepare
-
baseの指定条件を満たしていないため同期点処理全体の最適化ができない場合に,プリペア処理を最適化します。
次の条件をすべて満たす場合,親トランザクションブランチから発行されたRPCによって子トランザクションブランチがサービス要求を実行したときに,RPCのリターン前にプリペア処理を実行することで,2回のプロセス間通信を削減します。
-
baseを指定した最適化ができないこと。
-
親トランザクションブランチが,子トランザクションブランチを同期応答型RPCで呼び出していること。
ただし,この最適化を実行した場合,親トランザクションブランチが発行した同期応答型RPCの応答時間が遅くなります。また,子トランザクションブランチは,プリペア処理からコミット処理までの間隔(親トランザクションブランチからの指示がないとトランザクションを決着できない状態)が大きくなります。そのため,親トランザクションブランチのOpenTP1がシステムダウンし,トランザクションブランチ間の連絡ができなくなると,ジャーナルファイルのスワップやチェックポイントダンプファイルの有効化が遅れ,子トランザクションブランチのOpenTP1もシステムダウンする場合があります。
-
トランザクション最適化項目は,重複して指定できます。ただし,優先順位は次のようになります(1.>2.)。
-
base
-
asyncprepare
なお,このオペランドは,ユーザサービス定義またはrapリスナーサービス定義,およびユーザサービスデフォルト定義でも指定できます。
指定値の優先順位は次のとおりです(1.>2.>3.)。
-
ユーザサービス定義またはrapリスナーサービス定義
-
ユーザサービスデフォルト定義
-
トランザクションサービス定義
トランザクショナルRPC実行プロセス(clttrnd)またはCUP実行プロセス(cltcond)で,この機能を有効にするには,クライアント環境定義またはクライアントサービス定義のtrn_optimum_itemオペランドを指定する必要があります。
●trn_processing_in_rm_error=down|retry|force
〜《down》
トランザクション回復サービスによるトランザクションの回復時に,リソースマネジャに対して発行したXA関数(xa_commit関数,xa_forget関数,xa_rollback関数)が処理を続行できないコード(XAER_INVAL(-5),XAER_PROTO(-6))でエラーリターンした場合のOpenTP1の処置を指定します。
このような障害は,次のような場合に発生し,ほかのリソースと不整合になっているおそれがあります。
-
リソースマネジャに障害が発生した場合
-
OpenTP1のトランザクション制御下で,XA連携しているリソースマネジャが提供するトランザクション制御機能を使用した場合
-
XA連携時にリソースマネジャが禁止している機能を使用した場合
このような障害が発生した場合は,KFCA00907-EおよびKFCA00908-Eのメッセージを出力します。
- down
-
OpenTP1システムをダウンさせます。
システムダウン後は,すべてのリソースを正常な状態に回復し,OpenTP1システムを強制正常開始してください。
- retry
-
トランザクションが決着できるまで,障害となったリソースマネジャに対して一定間隔でトランザクションの決着を指示します。
この指定は,リソースマネジャの障害を何らかの方法で回復できる場合,または指定をforceに変更する前にリソースマネジャの状態を確認し,アクセス禁止などを処置する場合に指定します。
- force
-
障害となったリソースマネジャを無視して,トランザクションを強制的に決着させます。
この指定は,トランザクション強制決着後,障害となったリソースマネジャをほかのトランザクションがアクセスしてもかまわない場合に指定してください。
このオペランドは,障害発生時に処置を決定できるよう,オンライン中に変更できます。そのため,システム開始時にはretryを指定しておき,障害発生時に障害となったリソースマネジャに必要な処置をしたあと,指定をforceに変更するというような運用ができます。
●trn_recovery_list_remove=normal|force|no
〜《no》
OpenTP1開始時に,未決着トランザクション情報ファイルを削除するかどうかを指定します。
- normal
-
OpenTP1正常開始時に削除します。
- force
-
OpenTP1開始時に削除します。
- no
-
OpenTP1開始時に削除しません。
●trn_recovery_list_remove_level=未決着トランザクション情報ファイルの削除レベル
〜〈符号なし整数〉((0〜24855))《0》(単位:日)
未決着トランザクション情報ファイルの削除レベルを指定します。このオペランドは,trn_recovery_list_removeオペランドでnormalまたはforceを指定した場合に有効です。
- 0
-
全ファイルを削除します。
- 1〜24855
-
トランザクションサービス開始時刻から起算して,「指定値×24」時間より前に作成されたファイルを削除します。
●trn_max_crm_subordinate_count=最大CRM経由子トランザクションブランチ数
〜〈符号なし整数〉((0〜1024))《8》
OpenTP1下の一つのトランザクションブランチから生成される,CRM経由のRPCの最大数を指定します。
●trn_watch_time=トランザクション同期点処理時の最大通信待ち時間
〜〈符号なし整数〉((1〜65535))《120》(単位:秒)
トランザクションの同期点処理で,トランザクションブランチ間で行う通信(プリペア,コミット,ロールバック指示,または応答など)の受信待ち時間の最大値を指定します。
指定時間を過ぎても指示または応答がない場合は,該当するトランザクションブランチが2相コミットの1相目完了前であればロールバックさせ,1相目完了後であればトランザクションサービスのシステムプロセスでトランザクション決着処理を再試行します。
このオペランドは,ユーザサービス定義またはrapリスナーサービス定義,およびユーザサービスデフォルト定義でも指定できます。
指定値の優先順位は次のとおりです(1.>2.>3.)。
-
ユーザサービス定義またはrapリスナーサービス定義
-
ユーザサービスデフォルト定義
-
トランザクションサービス定義
これらのすべての定義でこのオペランドを省略した場合,トランザクションを行ったユーザサーバのwatch_timeの値を仮定します。ただし,trn_watch_timeには0秒を指定できないため,ユーザサーバのwatch_timeに0秒を指定した場合はtrn_watch_timeのデフォルト値である120秒を仮定します。
トランザクショナルRPC実行プロセス(clttrnd)またはCUP実行プロセス(cltcond)で,この機能を有効にするには,クライアント環境定義またはクライアントサービス定義のtrn_watch_timeオペランドを指定する必要があります。
●trn_rollback_information_put=no|self|remote|all
〜《no》
トランザクションブランチがロールバックした場合に,ロールバック要因に関する情報をログに取得するかどうかを指定します。
- no
- self
-
ロールバック要因が発生したトランザクションブランチでだけ,ログにロールバック情報を取得します。
- remote
-
selfに加え,他ノードのトランザクションブランチからロールバック要求されたトランザクションブランチでも,ログにロールバック情報を取得します。
- all
-
remoteに加え,自ノードのトランザクションブランチからロールバック要求されたトランザクションブランチでも,ログにロールバック情報を取得します。
このオペランドは,ユーザサービス定義またはrapリスナーサービス定義,およびユーザサービスデフォルト定義でも指定できます。
指定値の優先順位は次のとおりです(1.>2.>3.)。
-
ユーザサービス定義またはrapリスナーサービス定義
-
ユーザサービスデフォルト定義
-
トランザクションサービス定義
トランザクショナルRPC実行プロセス(clttrnd)またはCUP実行プロセス(cltcond)で,この機能を有効にするには,クライアント環境定義またはクライアントサービス定義のtrn_rollback_information_putオペランドを指定する必要があります。
このオペランドによって得たログを使用することで障害調査が容易になります。したがって,このオペランドにnoを指定しているか,または何も指定していない場合は,このオペランドにallを指定することをお勧めします。
●trn_limit_time=トランザクションブランチ最大実行可能時間
〜〈符号なし整数〉((0〜65535))《0》(単位:秒)
トランザクションブランチの最大実行可能時間を指定します。
トランザクションブランチを開始してから同期点処理が終了するまでの時間が,このオペランド指定時間を超えないようにdc_rpc_call関数,dc_rpc_poll_any_replies関数および同期点処理内で行う通信のタイムアウト時間を次のように自動設定します。
-
dc_rpc_call関数およびdc_rpc_poll_any_replies関数のタイムアウト時間
「K≧このオペランド指定時間」の場合は,要求処理を実行しないで,タイムアウトでエラーリターンします。
「K<このオペランド指定時間」でかつ「(このオペランド指定時間−K)≧W」の場合は,Wをタイムアウト時間とします。
「K<このオペランド指定時間」でかつ「(このオペランド指定時間−K)<W」の場合は,(このオペランド指定時間−K)をタイムアウト時間とします。
- K
-
現時刻−トランザクションブランチ開始時刻
- W
-
dc_rpc_call関数の場合はwatch_timeオペランド指定時間
dc_rpc_poll_any_replies関数の場合は引数timeout指定時間
-
同期点処理内で行う通信のタイムアウト時間
「K≧このオペランド指定時間」の場合は,タイムアウト時間を1秒とします。
「K<このオペランド指定時間」でかつ「(このオペランド指定時間−K)≧W」の場合は,Wをタイムアウト時間とします。
「K<このオペランド指定時間」でかつ「(このオペランド指定時間−K)<W」の場合は,(このオペランド指定時間−K)をタイムアウト時間とします。
- K
-
現時刻−トランザクションブランチ開始時刻
- W
-
trn_watch_timeオペランド指定時間
trn_watch_timeオペランドを省略した場合はwatch_timeオペランド指定時間
上記の受信待ち以外の処理で時間が掛かった場合は,このオペランド指定時間以内にトランザクションブランチが終了しないことがあります。
同期点処理開始前にこのオペランドの指定時間が経過した場合,そのトランザクションはロールバックします。
0を指定した場合は,時間監視をしません。
なお,このオペランドは,ユーザサービス定義またはrapリスナーサービス定義,およびユーザサービスデフォルト定義でも指定できます。指定値の優先順位は次のとおりです(1.>2.>3.)。
-
ユーザサービス定義またはrapリスナーサービス定義
-
ユーザサービスデフォルト定義
-
トランザクションサービス定義
トランザクショナルRPC実行プロセス(clttrnd)またはCUP実行プロセス(cltcond)で,この機能を有効にするには,クライアント環境定義またはクライアントサービス定義のtrn_limit_timeオペランドを指定する必要があります。
●trn_rollback_response_receive=Y|N
〜《Y》
RPC先トランザクションブランチにロールバック指示を送信したあと,ロールバック完了通知を受信するかどうかを指定します。
Nを指定した場合,RPC先トランザクションブランチからのロールバック完了通知を受信しないで(RPC先トランザクションブランチのロールバック処理の完了を待たないで)自トランザクションブランチを終了します。
なお,このオペランドは,ユーザサービス定義またはrapリスナーサービス定義,およびユーザサービスデフォルト定義でも指定できます。
指定値の優先順位は次のとおりです(1.>2.>3.)。
-
ユーザサービス定義またはrapリスナーサービス定義
-
ユーザサービスデフォルト定義
-
トランザクションサービス定義
トランザクショナルRPC実行プロセス(clttrnd)またはCUP実行プロセス(cltcond)で,この機能を有効にするには,クライアント環境定義またはクライアントサービス定義のtrn_rollback_response_receiveオペランドを指定する必要があります。
●trn_partial_recovery_type=type1|type2|type3
〜《type1》
RPCがタイムアウトし,RPC発行先プロセスのアドレスが未解決の場合やトランザクション実行中のUAPがダウンした場合に,トランザクションブランチ間の連絡がスムーズにできないで,トランザクションの決着に時間が掛かることがあります。
このオペランドでは,次に示す障害が発生した場合のトランザクション同期点処理方式を,指定値に示す三つの方式から選択して指定します。
- (障害1)RPCがタイムアウトした場合
-
この場合,RPC発行元トランザクションブランチは,サービス要求がどのプロセスで実行されているかがわからないため,RPC発行先トランザクションブランチにトランザクション同期点メッセージを送信できないで,RPC発行元トランザクションブランチおよびRPC発行先トランザクションブランチがトランザクション同期点メッセージ待ちとなり,トランザクションの決着に時間が掛かります。
- (障害2)RPC発行元UAPがRPCの応答受信前にダウンした場合
-
この場合,RPC発行元トランザクションブランチは,サービス要求がどのプロセスで実行されているかがわからないため,RPC発行先トランザクションブランチにトランザクション同期点メッセージを送信できないで,RPC発行先トランザクションブランチはトランザクション同期点メッセージ待ちとなり,トランザクションの決着に時間が掛かります。
- (障害3)RPC発行先UAPからの応答受信後にRPC発行元UAPとRPC発行先UAPがほぼ同時にダウンした場合
-
この場合,それぞれのトランザクションブランチを引き継いだトランザクション回復プロセスは,相手UAPプロセスのダウンを知らないため,すでに存在しないUAPプロセスにトランザクション同期点メッセージを送信してしまい,トランザクションの決着に時間が掛かることがあります。
- type1
-
(障害1)が発生した場合,RPC発行元トランザクションブランチおよびRPC発行先トランザクションブランチは,トランザクション同期点メッセージ受信処理がタイムアウトすることによって,トランザクションを決着します。
(障害2)が発生した場合,RPC発行元トランザクションブランチは,RPC発行先トランザクションブランチにトランザクション同期点メッセージを送信しないでトランザクションを決着します。RPC発行先トランザクションブランチは,トランザクション同期点メッセージ受信処理がタイムアウトすることによって,トランザクションを決着します。
(障害3)が発生した場合,RPC発行元トランザクションブランチおよびRPC発行先トランザクションブランチは,トランザクション同期点メッセージ受信処理がタイムアウトすることによって,トランザクションを決着します。
- type2
-
(障害1)が発生してトランザクションをコミットする場合はtype1と同じです。
(障害1)が発生してトランザクションをロールバックする場合,または(障害2)が発生した場合は,RPC発行元トランザクションブランチは,RPC発行先トランザクションブランチが存在するノードのトランザクションサービスプロセスにトランザクション同期点メッセージを送信後,トランザクションを決着します。トランザクション同期点メッセージを受信したトランザクションサービスプロセスは,該当するトランザクションブランチを処理中のプロセスに,トランザクション同期点指示を送信します。
(障害3)が発生した場合,RPC発行元トランザクションブランチおよびRPC発行先トランザクションブランチは,トランザクション同期点メッセージ受信処理がタイムアウトすることによって,トランザクションを決着します。
- type3
-
(障害1)が発生してトランザクションをコミットする場合は,type1と同じです。
(障害1)が発生してトランザクションをロールバックする場合,(障害2)が発生した場合,または(障害3)が発生した場合,相手トランザクションブランチが存在するノードのトランザクションサービスプロセスに,トランザクション同期点メッセージを送信します。トランザクション同期点メッセージを受信したトランザクションサービスプロセスは,該当するトランザクションブランチを処理中のプロセスに,トランザクション同期点指示を送信します。
次に示す場合,このオペランドにtype2またはtype3を指定しても,トランザクションの決着に時間が掛かることがあります。
-
RPC実行中に,RPC発行先UAPの状態が変更となり(負荷増加,UAP終了,UAP閉塞など),ほかのノードの同一UAPにサービス要求が再転送された場合
-
相手先のOpenTP1がこのオプションをサポートしていないバージョンの場合
-
相手先トランザクションブランチがトランザクション同期点メッセージ受信処理以外で時間が掛かっている場合
TP1/Server BaseまたはTP1/LiNK以外とトランザクション連携をする場合,このオペランドにはtype1を指定または省略してください。
なお,このオペランドは,ユーザサービス定義またはrapリスナーサービス定義,およびユーザサービスデフォルト定義でも指定できます。
指定値の優先順位は次のとおりです(1.>2.>3.)。
-
ユーザサービス定義またはrapリスナーサービス定義
-
ユーザサービスデフォルト定義
-
トランザクションサービス定義
トランザクショナルRPC実行プロセス(clttrnd)またはCUP実行プロセス(cltcond)で,この機能を有効にするには,クライアント環境定義またはクライアントサービス定義のtrn_partial_recovery_typeオペランドを指定する必要があります。
●max_socket_descriptors=ソケット用ファイル記述子の最大数
〜〈符号なし整数〉((32〜2032))
OpenTP1制御下のプロセス※でのソケット用に使用するファイル記述子の最大数を指定します。
指定値の範囲は,適用OSがAIX,HP-UXまたはWindowsの場合は32〜2032,適用OSがSolarisまたはLinuxの場合は32〜1008です。
OpenTP1制御下のプロセス※は,システムサーバやユーザサーバとの間で,ソケットを使用したTCP/IP通信でプロセス間の情報交換をしています。そのため,同時に稼働するUAPプロセスの数,および通信する他ノードの数によって,このオペランドを変更する必要があります。
- 注※
-
MCFサービス(MCFマネジャサービス,MCF通信サービス,およびアプリケーション起動サービス)以外のOpenTP1プロセスが対象です。MCFサービスの場合は,「システムサービス情報定義」および「システムサービス共通情報定義」を参照してください。
ソケット用ファイル記述子の最大数の算出式を,次に示します。
↑(自ノード内UAPプロセス数※1+トランザクションサービスを要求してくるノード内のtrnシステムプロセス数※2+システムサービスプロセス数※3)/0.8↑
↑↑:小数点以下を切り上げます。
- 注※1
-
自ノード内UAPプロセス数は,次に示す値の合計です。
-
自OpenTP1内のUAPで,トランザクショナルRPCでサービス要求を送信するUAPプロセス数
-
自OpenTP1内のサービスに対し,トランザクショナルRPCでサービスを要求してくる他ノード内のUAPプロセス数
-
CUPから同時に起動するトランザクション数(クライアントサービス定義のparallel_countオペランドの指定値)
-
- 注※2
-
トランザクションサービスを要求してくるノードのtrnシステムプロセス数とは,次に示す値の合計です。
-
自OpenTP1のall_nodeオペランドに指定したノードのうち,自OpenTP1からトランザクショナルRPCでトランザクションを拡張するノードの,トランザクションサービス定義のtrn_recovery_process_countオペランドの値に1を加えた数
-
自ノード名を,OpenTP1のall_nodeオペランドに指定している他ノードのうち,トランザクショナルRPCで自OpenTP1にトランザクションを拡張しているノードの,トランザクションサービス定義のtrn_recovery_process_countオペランドの値に1を加えた数
-
- 注※3
-
システムサービスプロセス数とは,自OpenTP1内のシステムサービスプロセスの数です。自OpenTP1内のシステムサービスプロセスは,rpcstatコマンドで表示されるサーバ名をカウントすることで求められます。rpcstatコマンドで表示されるサーバ名のうち,マニュアル「OpenTP1 解説」のOpenTP1のプロセス構造に記載されているシステムサービスプロセスをカウントしてください。
このオペランドの指定が小さいと,OpenTP1制御下の他プロセスとのコネクションが設定できなくなるため,プロセスがKFCA00307-Eメッセージを出力して異常終了します。
ここで指定を省略した場合,システム共通定義の値を仮定します。
●trn_recovery_failmsg_interval=仕掛中トランザクション情報メッセージ間隔最小時間
〜〈符号なし整数〉((0〜65535))《1800》(単位:秒)
KFCA00960-Iメッセージを出力する間隔を指定します。
トランザクションを回復できなかった際,以前にKFCA00960-Iメッセージを出力してからこのオペランドの指定時間が経過した場合には,再びメッセージを出力します。ただし次の場合はすぐに出力します。
-
トランザクション開始後,最初に回復に失敗したとき
-
OpenTP1終了処理開始後,最初に回復に失敗したとき
-
OpenTP1再開始後,最初に回復に失敗したとき
指定値が0の場合にはKFCA00960-Iメッセージを出力しません。
複数のトランザクションブランチを回復している場合は,このオペランドはそれぞれのトランザクションブランチに適用されます。同一のトランザクションブランチのメッセージだけが,このオペランドで指定された間隔で出力されます。
なお,1回のトランザクションの回復失敗で,KFCA00960-Iメッセージが2個以上出力される場合があります。これは,回復失敗の要因が複数存在するためです。KFCA00960-Iメッセージは,KFCA00990-Iメッセージよりもあとに出力される場合があります。
●trn_wait_rm_open=continue|stop|retry_continue|retry_stop
〜《continue》
OpenTP1起動時に,OpenTP1以外が提供するリソースマネジャのオープン処理(xa_open関数)でエラーが発生したときの処置を指定します。
- continue
-
xa_open関数エラーを無視してOpenTP1開始処理を続行します。
- stop
-
xa_open関数エラーが発生した場合,OpenTP1開始処理を中止します。
- retry_continue
-
xa_open関数エラーが発生した場合,OpenTP1開始処理を中断し,trn_retry_interval_rm_openオペランドで指定したインタバルでtrn_retry_count_rm_openオペランドで指定した回数だけxa_open関数発行をリトライします。 xa_open関数エラーが解消されなかったときは,エラーを無視してOpenTP1開始処理を続行します。
- retry_stop
-
xa_open関数エラーが発生した場合, OpenTP1開始処理を中断し, trn_retry_interval_rm_openオペランドで指定したインタバルでtrn_retry_count_rm_openオペランドで指定した回数だけxa_open関数発行をリトライします。 xa_open関数エラーが解消されなかったときは,OpenTP1開始処理を中止します。
●trn_retry_interval_rm_open=xa_open関数発行リトライインタバル時間
〜〈符号なし整数〉((1〜3600))《10》(単位:秒)
trn_wait_rm_openオペランドでretry_continueかretry_stopを指定したときのxa_open関数発行リトライをする間隔を指定します。
●trn_retry_count_rm_open=xa_open関数発行リトライ回数
〜〈符号なし整数〉((1〜65535))《18》
trn_wait_rm_openオペランドでretry_continueかretry_stopを指定したときのxa_open関数発行リトライをする回数を指定します。
●thread_stack_size=OpenTP1内部で使用するスレッドスタック領域のサイズ
〜〈符号なし整数〉((1024〜524288))《49152※》(単位:バイト)
- 注※
-
AIX版のuCosminexus TP1/Server Base(64)の場合は,デフォルト値が65536となります。
OpenTP1の内部で使用するスレッドスタック領域のサイズを指定します。リソースマネジャ監視サービスのスレッドスタック領域は262,144バイトに拡張されているため,XA連携するリソースマネジャで262,144バイト以上のスレッドスタック領域が必要な場合だけ指定してください。このオペランドを指定した場合のメモリ使用量の算出式を次に示します。
スレッドスタック領域のサイズ(単位:バイト)=トランザクションサービス定義のtrn_recovery_process_countオペランドの指定値に2を加えた数×thread_stack_sizeオペランドの指定値×2
●polling_control_data=Y|N
〜《N》
トランザクションリカバリデーモンで,トランザクション回復要求の受信待ちの状態のときに,定期的に待ち状態に割り込んで,一時クローズ処理要求が到着していないかどうかを検査することを指示します。
- Y
-
トランザクション回復要求の受信待ち状態に定期的に割り込み,一時クローズ処理要求が到着していないかどうかを検査します。
- N
-
トランザクション回復要求の受信待ち状態に割り込まないで,トランザクション回復要求が到着するまで待ち状態を継続します。
●thread_yield_interval=ソケットの再利用指示を受信できる契機を与えるインタバル時間
〜〈符号なし整数〉((1〜86400))《90》(単位:秒)
トランザクションリカバリデーモンで,トランザクション回復要求の受信待ちの状態のときに,定期的に待ち状態に割り込んで,一時クローズ処理要求が到着していないかどうかを検査する場合の検査インタバル時間を秒単位で指定します。
また,トランザクション回復要求を待つことなく次々にトランザクション回復要求を受け付けている場合には,連続してトランザクション回復要求を受け付けた時間が一定時間を超えたところで,一時クローズ処理要求が到着していないかどうかを検査します。このオペランドは,このインタバル値としても使用されます(連続してトランザクション回復要求を受け付けた時間がこのオペランド指定値を超えたときの一時クローズ処理要求到着検査には,シグナルによる割り込みは発生しません)。
このオペランドの指定値は,一時クローズ処理要求を送信したプロセスが応答を待つ時間(180秒:ipc_sockctl_watchtimeオペランドのデフォルト値)よりも小さい値を設定する必要があります。
トランザクション回復要求待ち状態に割り込んで,一時クローズ処理要求受信を検査する機能は,polling_control_dataオペランドにYを指定した場合にだけ動作します。連続してトランザクション回復要求を受け付けたときに一時クローズ処理要求受信を検査する機能は,polling_control_dataオペランドの指定に関係なく,動作します。
このオペランドに最大値を指定した場合は,polling_control_dataオペランドの指定に関係なく,一時クローズ処理要求が到着していないかどうかの検査を実行しません。
●groups=グループ識別子〔,グループ識別子〕
〜〈符号なし整数〉((0〜4294967294))
OSに登録されているグループIDを指定してください。このオペランドには16個まで指定できます。
このオペランドの指定に関係なく,OpenTP1管理者のグループIDはsetgid()システムコールによって自動的に設定されます。
最大値はOSに依存するので,使用しているOSのマニュアルを参照してください。
●trn_xar_use=Y|N
〜《N》
XAリソースサービスを使用するかどうかを指定します。XAリソースサービスを使用する場合,XAリソースサービス定義で実行環境を定義する必要があります。また,システム共通定義のjnl_fileless_optionオペランドにYを指定している場合は,XAリソースサービスを使用できません。
- Y
-
XAリソースサービスを使用します。
- N
-
XAリソースサービスを使用しません。
●trn_start_recovery_mode=stop|wait|continue
〜《stop》
trnstring定義コマンドで-mオプションを指定したリソースマネジャのOpenTP1開始処理でのトランザクション回復処理方式を指定します。このオペランドは再開始時に変更または削除できます。
- stop
-
一定時間(trn_start_recovery_watch_timeオペランドの指定値)以上のリトライ処理で回復処理を行っても,回復処理が完了しない場合,OpenTP1の開始処理を中止します。このとき,アボートコード「t860004」を出力します。
- wait
-
trnstring定義コマンドの-mオプションで指定したリソースマネジャの中で,OpenTP1に関連するすべてのトランザクション回復処理が完了するまで,リトライ処理が実行されます。このリトライ処理を中断するには,dcstopコマンドでOpenTP1を強制停止してください。
- continue
-
一定時間(trn_start_recovery_watch_timeオペランドの指定値)以上のリトライ処理で回復処理を行っても,回復処理が完了しない場合,回復処理を中断し,OpenTP1の開始処理を続行します。
●trn_start_recovery_watch_time=リトライ経過時間
〜〈符号なし整数〉((0〜65535))《600》(単位:秒)
trnstring定義コマンドで-mオプションを指定した場合の,オンライン前回復処理が完了するまでのリトライ上限時間を指定します。0を指定した場合は,リトライをしません。このオペランドは,trn_start_recovery_modeオペランドでwait以外を指定した場合に有効です。このオペランドは再開始時に変更または削除できます。
●trn_start_recovery_interval=リトライ間隔時間
〜〈符号なし整数〉((0〜65535))《3》(単位:秒)
trnstring定義コマンドで-mオプションを指定した場合の,オンライン前回復処理が完了するまでのリトライ間隔時間を指定します。0を指定した場合は,すぐに次のリトライ処理を行います。trn_start_recovery_watch_timeオペランドで0を指定した場合は,このオペランドで指定した値は無効になります。このオペランドは再開始時に変更または削除できます。
●trn_xa_commit_error=down|force
〜《down》
複数のリソースをアクセスするトランザクションがコミットに決定したあと,コミットできなくなったリソースマネジャが発生した場合※の処理を指定します。
この現象が発生した場合,該当トランザクションでアクセスしたリソース間の整合性は失われているおそれがあります。
- 注※
-
リソースマネジャに対して発行したxa_commit関数がロールバックした際のコード(XAER_RMERR,またはXA_RBから始まるコード)でリターンした場合
- down
-
OpenTP1システムをダウンさせます。
システムダウン後に,リソースの整合性を回復し,OpenTP1を強制正常開始してください。
- force
-
リソースの不整合を無視してシステムを続行します。
この場合,コミットを行う関数(dc_trn_chained_commit,dc_trn_unchained_commit(),tx_commit())は正常終了します。不整合が発生しても問題がないリソースの場合,またはテスト中の場合などに指定します。
●trn_prf_event_trace_level=TRNイベントトレースの取得レベル
〜((00000000〜00000007))《00000007》
TRNイベントトレースの取得レベルを指定します。このオペランドは,イベントトレースの取得機能を制御します。このオペランドの指定を省略した場合は,入口情報,正常出口情報,およびエラー出口情報をトレースとして取得します。TRNイベントトレースの詳細については,マニュアル「OpenTP1 解説」のトレース機能の記述を参照してください。
- 00000000
-
TRNイベントトレースを取得しません。
- 00000001
-
イベントの入口でトレースを取得します(入口情報)。
- 00000002
-
イベントの出口でトレースを取得します(正常出口情報)。
trn_prf_event_trace_conditionオペランドに,xafuncを指定した場合は,XA関数のリターン値が0以上のときにトレースを取得します。
- 00000004
-
イベントの出口で障害が発生したときにトレースを取得します(エラー出口情報)。
- 00000007
-
イベントの入口,および出口(障害発生時を含む)でトレースを取得します(入口情報,正常出口情報,およびエラー出口情報)。
これらの指定値は,論理和でも指定できます。例えば,00000003を指定すると,00000001と00000002の両方を指定したときと同じ動作になります。
取得したトレースをファイル出力または編集出力するには,prfgetコマンド,prfedコマンド,またはdcalzprfコマンドを使用します。ファイルの出力結果は,$DCDIR/spool/dctrninf/trace/prfに保存されます。これらのコマンドの詳細については,マニュアル「OpenTP1 運用と操作」を参照してください。
このオペランドの使用は,TP1/Extension 1をインストールしていることが前提です。TP1/Extension 1をインストールしていない場合の動作は保証できません。
●trn_prf_event_trace_condition=トレース取得種類〔,トレース取得種類〕
〜《xafunc》
取得するTRNイベントトレースの種類を指定します。取得したいトレースによって,複数の種類を指定できます。このオペランドの指定を省略した場合は,XA関数についてのトレースを取得します。
- xafunc
-
XA関数についてのトレースを取得します。
- trnservice
-
トランザクションサービスの動作状況についてのトレースを取得します。
なお,このオペランドは,TP1/Extension 1をインストールしていることが前提です。TP1/Extension 1をインストールしていない場合の動作は保証できませんので,ご了承ください。
●trn_completion_limit_time=トランザクション完了限界時間
〜〈符号なし整数〉((0〜65535))《0》(単位:秒)
トランザクションブランチの開始から終了までの最大実行時間を指定します。指定時間を超えた場合,このトランザクションブランチのプロセスが異常終了したあとに,トランザクションブランチが回復プロセスによってコミットまたはロールバックのどちらかに決着して終了します。0を指定した場合は,トランザクションブランチの最大実行時間を監視しません。
UAPが異常終了した場合に閉塞するかどうかはholdオペランド,term_watch_timeオペランドの指定によります。詳細については,ユーザサービス定義のholdオペランドおよびterm_watch_timeオペランドの説明を参照してください。
このオペランドの監視対象区間は,dc_trn_begin関数などの呼び出しやサービス関数の開始によるトランザクションの開始から,トランザクションの同期点処理終了情報(TJ)の取得後であるトランザクションブランチの終了までです。ただし,トランザクションの最適化が行われた場合,サーバ側のトランザクションブランチに対する監視が終了するのは,クライアント側に応答を返したあとです。このオペランドの監視対象区間の詳細および各種タイマ監視との関係については,「付録A.2 トランザクションの時間監視」を参照してください。
なお,このオペランドは,ユーザサービス定義またはrapリスナーサービス定義,およびユーザサービスデフォルト定義でも指定できます。
指定値の優先順位は次のとおりです(1.>2.>3.)。
-
ユーザサービス定義またはrapリスナーサービス定義
-
ユーザサービスデフォルト定義
-
トランザクションサービス定義
トランザクショナルRPC実行プロセス(clttrnd)またはCUP実行プロセス(cltcond)で,この機能を有効にするには,クライアントサービス定義のtrn_completion_limit_timeオペランドを指定する必要があります。
また,子トランザクションブランチを処理しているプロセスが,サービス関数処理以外のタイミングでこのオペランドの指定時間を超えて異常終了した場合,RPCコールの呼び出し元は,応答待ち時間が満了するまで待ち合わせることがあります。
- 注
-
トランザクション完了限界時間の精度は秒単位です。そのため,タイミングによっては,このオペランドに指定した値よりも最大約1秒長い時間でプロセスを強制停止することがあります。
●trn_extend_function=トランザクションサービスの機能の拡張レベル
〜〈16進数字〉((00000000〜00000003))《00000000》
トランザクションサービスの機能の拡張レベルを,次の中から指定します。
次の指定値で示す機能の拡張レベルを複数指定する場合,それぞれの指定値の論理和を指定してください。
- 00000000
-
トランザクションサービスの機能を拡張しません。
- 00000001
-
00000001は,トランザクションブランチが関連するすべてのOpenTP1ノードのトランザクションサービス定義で指定してください。
トランザクションブランチが関連するすべてのOpenTP1ノードのうち,このオペランドの指定がないノードが一つ以上ある場合,1相コミットでリソースマネジャからXAER_NOTAが返されたときは,ルートトランザクションブランチのリターン値は変更されません。
1相コミットで,リソースマネジャからXAER_NOTAが返された場合の関数のリターン値を次の表に示します。
関数
リターン値
trn_extend_function=00000000の場合
trn_extend_function=00000001の場合
dc_trn_chained_commit
(CBLDCTRN('C-COMMIT'))
DC_OK(00000)
DCTRNER_HAZARD(00904),DCTRNER_HAZARD_NO_BEGIN(00927)
dc_trn_unchained_commit
(CBLDCTRN('U-COMMIT'))
DC_OK(00000)
DCTRNER_HAZARD(00904)
tx_commit
(TXCOMMIT)
TX_OK(TX-OK)
TX_HAZARD(TX-HAZARD),TX_HAZARD_NO_BEGIN(TX-HAZARD-NO-BEGIN)
dc_mcf_commit
(CBLDCMCF('COMMIT'))
DCMCFRTN_00000(00000)
DCMCFRTN_HAZARD(70908)
- 注
-
括弧内の英数字は,COBOL言語を使用した場合の関数名およびステータスコードです。
- 00000002
-
00000002は,Hitachi System Information Captureのサーバ間連携機能を使用して,OpenTP1のprfトレースとHiRDBのSQLを関連付ける場合に指定してください。
この指定が有効となるのは,HiRDBとトランザクション連携をしているキュー受信型SPPの場合だけです。
この機能を使用する場合は次のことに注意してください。
-
HiRDBとXA連携する際に使用するHiRDBのRM関連オブジェクト名はシングルスレッド用(複数接続機能対応)のライブラリを使用してください。このライブラリはUAPへのリンケージだけでなく,trnlnkrmコマンドで指定するRM関連オブジェクト名にも指定してください。
ライブラリ名の詳細は,マニュアル「HiRDB システム導入・設計ガイド」を参照してください。
-
trnstring定義コマンドに指定する,HiRDBのxa_open関数用文字列は,複数接続機能に対応した文字列形式としてください。
-
複数接続機能対応のライブラリを使用するため,UAPで接続先のHiRDBを指定する必要があります。接続先の指定方法は,マニュアル「HiRDB UAP開発ガイド」を参照してください。
-
この機能を使用する場合は,ユーザサービス定義のuidオペランドは指定できません。
-
●trn_rcv_open_close_scope=Y|N
〜《N》
複数のリソースマネジャにアクセスしていたトランザクションの回復処理で,XA関数(xa_open(),xa_commit(),xa_rollback(),xa_close())の発行順序を変更するかどうかを指定します。発行順序の変更は,OpenTP1システムに登録されたOpenTP1が提供するリソースマネジャを除く,すべてのリソースマネジャに対して行われます。一部のリソースマネジャの回復処理で発行されるxa_open()がエラーとなり,回復処理が正常に実行されない場合に指定します。
- Y
-
XA関数の発行順序を変更します。
- N
-
XA関数の発行順序を変更しません。
このオペランドの指定による,XA関数の発行順序の例を示します。
- 例:
-
次の条件を満たす例で説明します。
-
同一ノード内のSUPでトランザクションを開始し,SUPからSPPにRPCコールでサービスを要求し,同一リソースマネジャに拡張子(-i)を使用してアクセスするグローバルトランザクションを構成した。
-
次のように定義している。
トランザクションサービス定義:
trnstring -n TEST_RM -i _A
trnstring -n TEST_RM -i _B
ユーザサービス定義(SUP):trnrmid -n TEST_RM -i _A
ユーザサービス定義(SPP):trnrmid -n TEST_RM -i _B
この例での,グローバルトランザクションの回復処理を次に示します。
図3‒6 グローバルトランザクションの回復処理の例 この例の場合の,オペランドの指定によるXA関数の発行順序の違いを次に示します。
- trn_rcv_open_close_scopeオペランドを省略,またはNを指定
-
-
トランザクション回復プロセス(trnrvd)
1. xa_open(TEST_RM_A)
2. xa_open(TEST_RM_B)
3. xa_commit(TEST_RM_A)またはxa_rollback(TEST_RM_A)
4. xa_commit(TEST_RM_B)またはxa_rollback(TEST_RM_B)
5. xa_close(TEST_RM_A)
6. xa_close(TEST_RM_B)
trnstring定義コマンドで-sオプションを省略した場合も,発行順序は同様になります。
-
- trn_rcv_open_close_scopeオペランドにYを指定
-
-
トランザクション回復プロセス(trnrvd)
1. xa_open(TEST_RM_A)
2. xa_commit(TEST_RM_A)またはxa_rollback(TEST_RM_A)
3. xa_close(TEST_RM_A)
4. xa_open(TEST_RM_B)
5. xa_commit(TEST_RM_B)またはxa_rollback(TEST_RM_B)
6. xa_close(TEST_RM_B)
trnstring定義コマンドに-sオプションを指定した場合も,発行順序は同様になります。
-
複数のリソースマネジャが登録されている状態で,特定のリソースマネジャにだけこの機能を使用したい場合は,trnstring定義コマンドの-sオプションを使用してください。詳細については,trnstring定義コマンドの説明を参照してください。
-
●watch_time=最大応答待ち時間
〜〈符号なし整数〉((0〜65535))(単位:秒)
RPCによってプロセス間で通信する場合,サービス要求を送信してからサービスの応答が返るまでの待ち時間の最大値を指定します。
OpenTP1の終了処理で,このオペランドで指定した時間だけ終了処理を待ち合わせる場合があります。したがって,大きな値を指定した場合,OpenTP1の終了処理に時間が掛かる場合があります。
指定時間を過ぎても応答がない場合は,RPCは送受信タイムアウトとしてエラーリターンします。
0を指定した場合は,応答を受信するまで待ち続けます。0を指定した場合,OpenTP1が終了しない場合があります。
省略した場合は,システム共通定義のwatch_timeオペランドの値を仮定します。
このオペランドは,システム共通定義のwatch_timeオペランドのデフォルト値で使用してください。
特別なチューニングを必要とする場合以外は,このオペランドの内容を変更しないことをお勧めします。
システム共通定義のwatch_timeオペランドのデフォルト値よりも,極端に小さな値または大きな値を指定すると,OpenTP1ダウンに至る障害が発生する場合がありますので,ご注意ください。
コマンド形式
次ページ以降に記述しています。