Hitachi

ノンストップデータベース HiRDB Version 9 システム定義(Windows(R)用)


9.2.9 トランザクション決着処理に関するオペランド

◆ pd_trn_rerun_branch_auto_decide = Y|N

このオペランドはHiRDB/パラレルサーバ限定のオペランドです。

トランザクションのコミットメント制御で一相目のプリペア処理が完了する前にユニットが異常終了した場合,ユニットの再開始時にこのトランザクションからブランチした未決着状態のトランザクションを自動決着するかどうかを指定します。

Y:

未決着状態のトランザクションを自動決着します。

N:

未決着状態のトランザクションを自動決着しません。この場合,HiRDB管理者が未決着状態のトランザクションを決着させる必要があります。未決着状態のトランザクションを決着させる方法については,マニュアル「HiRDB Version 9 システム運用ガイド」を参照してください。

《注意事項》

Yを指定した場合,又はこのオペランドを省略した場合の注意事項を次に示します。

  • 縮退起動機能を使用している場合,縮退起動時に開始していなかったユニットのトランザクションは自動決着の対象とはなりません。したがって,開始していなかったユニットを障害復旧後などに再開始した場合は,未決着状態のトランザクションがないかどうかを確認してください。未決着状態のトランザクションがある場合は,未決着状態のトランザクションを決着させてください。未決着状態のトランザクションの確認方法,及び未決着状態のトランザクションを決着させる方法については,マニュアル「HiRDB Version 9 システム運用ガイド」を参照してください。

  • ブランチ元のトランザクションがあるサーバのシステムログ量が増加します。

  • 未決着状態のトランザクションの決着処理を実行している間,ブランチ元のトランザクションがあるサーバのシステムログが上書き禁止状態になります。

◆ pd_trn_send_decision_intval_sec = 秒単位でのトランザクション自動決着の送信リトライ時間間隔

〜<符号なし整数>〜((0〜65535))《15》(単位:秒)

このオペランドはHiRDB/パラレルサーバ限定のオペランドです。

ブランチしたトランザクションに自動決着指示を送信した場合,通信障害などによって送信が失敗したときに決着指示を再送するまでの時間を秒単位で指定します。

《前提条件》

pd_trn_rerun_branch_auto_decideオペランドにYを指定,又は指定を省略している必要があります。

《注意事項》

0を指定した場合は決着指示を連続して再送するため,通信負荷が高くなります。

《ほかのオペランドとの関連》

このオペランドは,pd_trn_send_decision_intervalオペランドと次に示す関係があります。

  • 再送するまでの時間を秒単位で指定する場合はpd_trn_send_decision_intval_secオペランドを,分単位で指定する場合はpd_trn_send_decision_intervalオペランドを指定します。

  • pd_trn_send_decision_intval_secオペランドとpd_trn_send_decision_intervalオペランドを両方とも指定すると,pd_trn_send_decision_intval_secオペランドの指定値が優先されます。

◆ pd_trn_send_decision_interval = 分単位でのトランザクション自動決着の送信リトライ時間間隔

〜<符号なし整数>((0〜65535))(単位:分)

このオペランドはHiRDB/パラレルサーバ限定のオペランドです。

ブランチしたトランザクションに自動決着指示を送信した場合,通信障害などによって送信が失敗したときに決着指示を再送するまでの時間を分単位で指定します。通常はpd_trn_send_decision_intval_secオペランドを指定し,このオペランドは省略してください。

《前提条件》

pd_trn_rerun_branch_auto_decideオペランドにYを指定,又は指定を省略している必要があります。

《注意事項》

0を指定した場合は決着指示を連続して再送するため,通信負荷が高くなります。

《ほかのオペランドとの関連》

このオペランドはpd_trn_send_decision_intval_secオペランドと次に示す関係があります。

  • 再送するまでの時間を秒単位で指定する場合はpd_trn_send_decision_intval_secオペランドを,分単位で指定する場合はpd_trn_send_decision_intervalオペランドを指定します。

  • pd_trn_send_decision_intval_secオペランドとpd_trn_send_decision_intervalオペランドを両方とも指定すると,pd_trn_send_decision_intval_secオペランドの指定値が優先されます。

  • pd_trn_send_decision_intval_secオペランドとpd_trn_send_decision_intervalオペランドを両方とも指定しないと,pd_trn_send_decision_intval_secオペランドの省略値が仮定されます。

◆ pd_trn_send_decision_retry_time = トランザクション自動決着の最大待ち時間

〜<符号なし整数>((0〜65535))《360》(単位:分)

このオペランドはHiRDB/パラレルサーバ限定のオペランドです。

ブランチしたトランザクションに自動決着指示を送信してから決着完了の応答があるまでの最大待ち時間を指定します。ここで指定した時間を過ぎても決着完了の応答がない場合,通信障害などの回復不能な障害が発生したとみなし,ブランチしたトランザクションへの決着指示を中止して,ブランチ元のトランザクションを決着させます。

なお,このオペランドに0を指定した場合は時間監視をしません。

《前提条件》

pd_trn_rerun_branch_auto_decideオペランドにYを指定,又は指定を省略している必要があります。

◆ pd_trn_watch_time = トランザクション同期点処理時の最大通信待ち時間

〜<符号なし整数>((0,300〜65535))《3600》(単位:秒)

このオペランドはHiRDB/パラレルサーバ限定のオペランドです。

HiRDBサーバプロセス上で実行されるトランザクションの同期点処理で,トランザクションブランチ間で行う通信(プリペア及びコミットの要求又は完了通信)の受信待ち時間の最大値を指定します。指定時間を過ぎても要求又は完了通信がない場合,該当するトランザクションブランチが2相コミットの1相目完了前であればロールバックします。1相目完了後であれば,指示された処理を実行してトランザクションを決着します。トランザクション間で行う通信については,マニュアル「HiRDB Version 9 解説」の「コミットとロールバック」を参照してください。

《利点》

HiRDBクライアントがトランザクション決着指示を中断(クライアントプロセスの強制終了など)しても,HiRDBサーバがこのトランザクションの実行を中止しないと,トランザクションを実行し続けます。このため,データベースの排他資源などを長時間占有することがあります。このオペランドを指定すると,排他資源などの占有時間を短縮できます。

《指定値の目安》

通常,このオペランドを指定する必要はありません。次に示す場合にこのオペランドを指定してください。

  • コミット時にKFPA11989-E又はKFPA11722-Eメッセージが出力される場合

  • 該当トランザクションでデータベースの更新件数が少ないのにCOMMIT文の処理時間が掛かる場合

《オペランドの規則》
  • 0を指定すると,プリペア及びコミットの要求又は完了を受信するまで要求又は完了通信を待ち続けます。

  • 1〜299を指定した場合は300に切り上げられます。

《注意事項》
  • 2相コミットの2相目で行うコミットの要求又は完了通信に対しては,pd_dbsync_point=commitを指定したときだけ,このオペランドの指定値が有効になります。

◆ pd_trn_rcvmsg_store_buflen = トランザクション回復メッセージキューサイズ

〜<符号なし整数>((4096〜25600000))《8192》(単位:バイト)

  • 0904互換モードの場合:((4096〜25600000))《4096》

HiRDBは,トランザクションの回復処理を行うとき,回復対象となるトランザクションをトランザクション回復メッセージキューに登録して管理します。このオペランドでは,トランザクション回復メッセージキューサイズを指定します。

《指定値の目安》
  • 通常は,このオペランドを指定する必要はありません。

  • HiRDB稼働中にKFPS00854-Wメッセージ(server=_trnrcv)が出力された場合に,このオペランドの指定を検討してください。指定値の見積もり式を次に示します。なお,見積もりの結果が省略値以下だった場合は,省略値を指定してください。

    ・HiRDB/シングルサーバの場合

     ↑72×A÷1024↑×1024〔バイト〕

    ・HiRDB/パラレルサーバの場合

     ↑72×(B+C+D+E)÷1024↑×1024〔バイト〕

    A:pd_max_usersオペランドの値×2+7

    B:

    ユニット内にFESがある場合:b×2+7

     b:

     マルチFESの場合:pd_max_usersオペランドの値+1

     マルチFESでない場合:pd_max_usersオペランドの値

    ユニット内にFESがない場合:0

    C:

    ユニット内にBESがある場合(BESが複数ある場合は,それぞれのBESで求めた値を加算します):

    MAX(pd_max_bes_processオペランドの値,pd_max_usersオペランドの値)×2+7

    ユニット内にBESがない場合:0

    D:

    ユニット内にDSがある場合:

    MAX(pd_max_dic_processオペランドの値,pd_max_usersオペランドの値)×2+7

    ユニット内にDSがない場合:0

    E:

    影響分散スタンバイレス型系切り替えを適用している場合:

    (MAX(ゲストBESの中で最大のpd_max_bes_processオペランドの値,pd_max_usersオペランドの値)×2+7)×pd_ha_max_act_guest_serversオペランドの値

    影響分散スタンバイレス型系切り替えを適用していない場合:0

《注意事項》
  • このオペランドに省略値より大きい値を指定した場合,ユニットコントローラ用共用メモリが増加します。詳細は,マニュアル「HiRDB Version 9 システム導入・設計ガイド」の「ユニットコントローラが使用する共用メモリの計算式」を参照してください。

  • このオペランドに省略値より大きい値を指定した場合,トランザクション回復プロセス(pdtrnrvd)の最大プロセス数が増加します。トランザクション回復プロセス(pdtrnrvd)の最大プロセス数の見積もり式を次に示します。

    ・HiRDB/シングルサーバの場合

     MIN(トランザクション回復メッセージキューサイズ÷72,pd_max_usersオペランドの値×2+7)

    ・HiRDB/パラレルサーバの場合

     MIN(トランザクション回復メッセージキューサイズ÷72,A+B+C+D)

    A:

    ユニット内にFESがある場合:a×2+7

     a:

     マルチFESの場合:pd_max_usersオペランドの値+1

     マルチFESでない場合:pd_max_usersオペランドの値

    ユニット内にFESがない場合:0

    B:

    ユニット内にBESがある場合:MAX(pd_max_bes_processオペランドの値,pd_max_usersオペランドの値)×2+7

    ユニット内にBESがない場合:0

    C:

    ユニット内にDSがある場合:MAX(pd_max_dic_processオペランドの値,pd_max_usersオペランドの値)×2+7

    ユニット内にDSがない場合:0

    D:

    影響分散スタンバイレス型系切り替えを適用している場合:

    (MAX(ゲストBESの中で最大のpd_max_bes_processオペランドの値,pd_max_usersオペランドの値)×2+7)×pd_ha_max_act_guest_serversオペランドの値

    影響分散スタンバイレス型系切り替えを適用していない場合:0

《ほかのオペランドとの関連》

このオペランドはpd_max_server_processオペランドと関連があります。

◆ pd_trn_commit_optimize = ONEPHASE|NOUSE

このオペランドは,HiRDB/パラレルサーバ限定のオペランドです。

HiRDB/パラレルサーバのコミットメント制御で一相コミットを使用するかどうかを指定します。一相コミットについては,マニュアル「HiRDB Version 9 解説」を参照してください。

ONEPHASE:

トランザクション内の更新ブランチ数が一つの場合(一つのトランザクションが更新するサーバ数が一つの場合),コミットメント制御に一相コミットを使用します。なお,コミットメント制御で一相コミットを行うことを一相最適化といいます。

NOUSE:

コミットメント制御に二相コミットを使用します。一相コミットは使用しません。

《指定値の目安》

通常は,ONEPHASEを指定するか,又はこのオペランドを省略してください。

《注意事項》
  • OLTPシステムから二相コミットの指示がある場合は,このオペランドの指定は無効になります。

  • 回復不要FESを使用している場合,このオペランドの指定よりも回復不要FESの制限事項が優先されます。制限事項を次に示します。

    ・フロントエンドサーバ上に出力されるログを抑止します。

    ・回復不要FESを適用したフロントエンドサーバでは,X/Open XAインタフェースを使用して接続するUAPを実行できません。

◆ pd_trn_rollback_watch_time = ロールバック完了応答の最大待ち時間〔,ロールバック指示再送限界時間〕

このオペランドはHiRDB/パラレルサーバ限定のオペランドです。

このオペランドは,pd_trn_rerun_branch_auto_decideオペランドにYを指定,又は指定を省略している場合に有効になります。

また,クライアント環境定義のPDCWAITTIMEに0を指定,又は指定を省略しているUAPを監視対象とします。

ロールバック完了応答の最大待ち時間:〜<符号なし整数>((0〜65535))《3600》(単位:秒)

ロールバック処理で,フロントエンドサーバがバックエンドサーバ又はディクショナリサーバからロールバック完了応答を受信するまでの,待ち時間の最大値を指定します。指定した時間を過ぎても応答が受信できない場合は,該当するバックエンドサーバ又はディクショナリサーバに対してロールバック指示を再送します。

《指定値の目安》

通常,ロールバック完了応答の最大待ち時間を指定する必要はありません。トランザクションが決着できない事態が発生する可能性を考慮し,システム要件として3,600秒よりも早くトランザクションを決着させる必要がある場合は,トランザクション決着まで待てる秒数を指定してください。

《注意事項》
  • ロールバック完了応答の最大待ち時間に0を指定,又は指定を省略した場合,ロールバック指示は再送されません。

  • ロールバック完了応答の最大待ち時間に1〜9を指定した場合,自動的に10秒に切り上げられます。

ロールバック指示再送限界時間:〜<符号なし整数>((0〜65535))《600》(単位:秒)

ロールバック指示の再送が失敗した場合に,ロールバック指示の再送を繰り返す時間を指定します。

ロールバック完了応答の最大待ち時間を経過しても,バックエンドサーバ又はディクショナリサーバからのロールバック完了応答を受信できなかった場合,フロントエンドサーバは応答がないサーバに対してロールバック指示を再送します。再送に失敗すると,ロールバック指示再送限界時間まで,再送を繰り返します。

なお,ロールバック指示再送限界時間まで再送が成功しなかった場合,KFPS00936-Eメッセージを出力し,フロントエンドサーバプロセスを異常終了させ,トランザクションをキャンセルします。

《指定値の目安》

通常,ロールバック指示再送限界時間を指定する必要はありません。ロールバック指示の再送が失敗し続ける可能性を考慮し,システム要件として600秒よりも早くトランザクションを決着させる必要がある場合は,トランザクション決着まで待てる秒数を指定してください。

なお,通信障害時にUAPに応答するまでには,「ロールバック完了応答の最大待ち時間+ロールバック指示再送限界時間」の時間が必要です。この点に留意して,値を設定してください。

《注意事項》
  • ロールバック指示再送限界時間に1〜239を指定した場合,自動的に240秒に切り上げられます。

このオペランドの適用範囲を次の図に示します。

[図データ]