Hitachi

OpenTP1 Version 7 分散トランザクション処理機能 TP1/Server Base Enterprise Option 使用の手引


6.8.2 HiRDB連携時の運用

HiRDBと連携する場合のTP1/EEの運用について説明します。

〈この項の構成〉

(1) 環境設定(HiRDB連携時)

HiRDB連携時にTP1/EEで設定する必要がある項目について説明します。

(a) TP1/EEのトランザクション関連定義のtrn_rm_open_close_scopeオペランド

trn_rm_open_close_scopeオペランドは,指定を省略するかまたはprocessを指定することをお勧めします。

trn_rm_open_close_scopeオペランドの指定を省略またはprocessを指定した場合で,ネットワークダウン以外の障害によってTP1/EEとHiRDBとのコネクションが切断されたときは,コネクションの切断が要因となるSQLエラーは発生しません。これは,障害が復旧したあとにコネクションが再接続されるためです。

コネクション切断の要因がネットワークダウンの場合は,コネクションの切断が要因となるSQLエラーが発生します。これは,障害が復旧したあともコネクション切断を検知できないことが要因となって,コネクションの再接続ができないためです。ただし,該当するスレッドでの次のトランザクションではコネクション切断を検知して再接続するため,コネクションの切断が要因となるSQLエラーは発生しません。

(b) TP1/EEのトランザクション関連定義のtrnstring定義コマンド

trnstring定義コマンドで次のように指定します。

  • -o "トランザクションサービス用xa_open関数用文字列"

    "HiRDBの環境変数グループ識別子*HiRDBの環境変数設定ファイル名(クライアント環境定義ファイル名)"の書式で記述します。HiRDBの環境変数グループ識別子は任意の4バイト文字固定で,HiRDBの環境変数設定ファイル名はフルパス名で記述してください。

  • -c "トランザクションサービス用xa_close関数用文字列"

    指定する必要はありません。

  • -O "ユーザサービス用xa_open関数用文字列"

    "HiRDBの環境変数グループ識別子+HiRDBの環境変数設定ファイル名(クライアント環境定義ファイル名)"の書式で記述します。HiRDBの環境変数グループ識別子は任意の4バイト文字固定で,HiRDBの環境変数設定ファイル名はフルパス名で記述してください。

  • -C "ユーザサービス用xa_close関数用文字列"

    指定する必要はありません。

  • -x

    指定する必要はありません。

    注意事項
    • -oオプションおよび-Oオプションには,同一のHiRDBの環境変数グループ識別子を指定してください。

    • HiRDBの環境変数グループ識別子とHiRDBの環境変数設定ファイル名の間に,-oオプションの場合は"*"を,-Oオプションの場合は"+"を指定してください。

    • -rオプションを指定しないでください。-rオプションを指定すると,トランザクション決着が遅くなることがあります。

    • -iオプションを指定する場合,複数のリソースマネジャ拡張子を指定しないでください。複数のリソースマネジャ拡張子を指定すると,不要な通信が発生し,トランザクション性能に影響します。

    • trnstring定義コマンドを複数指定する場合,trnstring定義コマンド間でHiRDBの環境変数グループ識別子が重複しないようにしてください。重複した場合,エラーになったり,想定していないHiRDBサーバに対してSQLを実行したりすることがあります。

(c) TP1/Server Baseのユーザサービス定義

TP1/Server Baseのユーザサービス定義のputenv形式またはdcputenv形式で,次のHiRDBの環境変数を指定します。HiRDBの環境変数の詳細については,マニュアル「HiRDB UAP開発ガイド」を参照してください。

  • PDSWAITTIME トランザクション処理中のサーバの最大待ち時間

    任意の値を指定します。HiRDBサーバがHiRDBクライアントからの要求に対する応答を返してから,次にHiRDBクライアントから要求が来るまでのHiRDBサーバの最大待ち時間を指定する環境変数です。

  • PDSWATCHTIME トランザクション処理以外のサーバの最大待ち時間

    任意の値を指定します。HiRDBサーバがHiRDBクライアントからの要求に対する応答を返してから,次にHiRDBクライアントから要求が来るまでのHiRDBサーバの最大待ち時間を指定する環境変数です。0以外を指定するときは,PDKALVLに2を指定してください。

  • PDXAMODE トランザクションの移行機能

    0を指定します。トランザクションの移行機能を使用するかどうかを指定する環境変数です。

  • PDTXACANUM

    トランザクション実行中の障害を考慮し,次の算出式を満たす値以上を指定することを推奨します。

    指定値≧TP1/EEのスレッド数×HiRDB用リソースマネジャ数×2
    • TP1/EEのスレッド数

      通常処理スレッド数,予備処理スレッド数,タイマ処理スレッド,および回復スレッド数の合計に3を加えた値です。

      ・通常処理スレッド数

      TP1/EEのプロセス関連定義のthread_noオペランドで指定します。

      ・予備処理スレッド数

      TP1/EEのプロセス関連定義のreserve_thread_noオペランドで指定します。

      ・タイマ処理スレッド数

      TP1/FSPのタイマ関連定義のtim_perm_thread_noオペランドで指定します。

      ・回復スレッド数

      TP1/EEのプロセス関連定義のrecover_thread_noオペランドで指定します。

    • HiRDB用リソースマネジャ数

      トランザクション関連定義trnstring定義コマンドに指定するX/OpenのXAインタフェースを使用するHiRDB用リソースマネジャの数です。

(d) HiRDBのクライアント環境定義ファイル(環境変数設定ファイル)

HiRDBのクライアント環境定義ファイルを次のように設定します。ファイル名は任意で,ファイル名の長さの上限は250バイトです。次に示す設定値以外の環境変数の設定は任意です。

HiRDBのクライアント環境定義ファイルの詳細については,マニュアル「HiRDB UAP開発ガイド」を参照してください。

  • PDHOST=HiRDBサーバのホスト名

    接続するHiRDBサーバのホスト名を指定します。

  • PDUSER=ユーザ名/パスワード

    ユーザ名およびパスワードを指定します。

    大文字,小文字の指定に関係なく大文字として扱われます。ただし,「'"ユーザ名"/"パスワード"'」のように,小文字を引用符「"」で囲んだ場合は,小文字として扱われます。

  • PDNAMEPORT=HiRDBサーバのポート番号

    接続するHiRDBサーバのポート番号を指定します。HiRDBのシステム共通定義のpd_name_portオペランドの指定値を指定してください。pd_name_portオペランドについては,マニュアル「HiRDB システム定義」を参照してください。

(2) リソースマネジャに関する準備(HiRDB連携時)

使用できるリソースマネジャの種別や,注意点について説明します。

(a) 使用できるリソースマネジャ

静的リソースマネジャおよび動的リソースマネジャを使用できます。静的リソースマネジャおよび動的リソースマネジャの比較を次の表に示します。

表6‒20 動的リソースマネジャおよび静的リソースマネジャの比較(HiRDBの場合)

項目

動的リソースマネジャ

静的リソースマネジャ

コネクション形態

TP1/EE起動時にコネクションを確立し,TP1/EE終了時にコネクションを解放します。

SQLを発行した場合の動作

xa関数を,1リソースマネジャ当たり3〜4回発行します。

SQLを発行しない場合の動作

xa関数を発行しません。

xa関数を,1リソースマネジャ当たり3〜4回発行します。

(b) UAP作成時のリソースマネジャ連携オブジェクトファイル

eetrnmkobjコマンドを使用して作成します。

(c) コネクション数に関する注意点

TP1/EEは,HiRDBとの間に複数のコネクションを確立します。そのため,HiRDBの定義に次の算出式を満たすよう指定する必要があります。

  • HiRDBとの同時接続数

    HiRDBのシステム共通定義のpd_max_usersオペランドで指定します。

    トランザクション実行中の障害を考慮し,次の算出式を満たす値以上を加算することを推奨します。

    指定値≧TP1/EEのスレッド数×HiRDB用リソースマネジャ数×2
  • TP1/EEのスレッド数

    通常処理スレッド数,予備処理スレッド数,およびタイマ処理スレッド数の合計に1を加えた値です。

    なお,TP1/FSPのトランザクション関連定義のtrn_aph_useオペランドにYを指定した場合は,1を加えてください。

    • 通常処理スレッド数

      TP1/EEのプロセス関連定義のthread_noオペランドで指定します。

    • 予備処理スレッド数

      TP1/EEのプロセス関連定義のreserve_thread_noオペランドで指定します。

    • タイマ処理スレッド数

      TP1/FSPのタイマ関連定義のtim_perm_thread_noオペランドで指定します。

      tim_perm_thread_noオペランドについては,TP1/FSPの関連ドキュメントを参照してください。

  • HiRDB用リソースマネジャ数

    トランザクション関連定義のtrnstring定義コマンドに指定するHiRDB用リソースマネジャの数です。接続するHiRDBサーバごとに定義したtrnstring定義コマンドの数です。

(3) 実行中のトランザクションの確認

トランザクション関連定義のtrnstring定義コマンド,eetrnlstrコマンド,およびHiRDBのpdlsコマンドを使用するとHiRDBで実行中のトランザクションを確認できます。トランザクションの確認方法は,TP1/EE 01-01とTP1/EE 01-02以降で異なります。

なお,pdlsコマンドの詳細については,マニュアル「HiRDB コマンドリファレンス」を参照してください。

(a) TP1/EE 01-01でトランザクションを確認する方法

次に示す条件が成り立つ場合,TP1/EEのトランザクションがHiRDB上で実行されていることを確認できます。

A=A'かつB=B'かつC=C'

A,A',B,B',C,およびC'の内容を次に示します。

A

トランザクション関連定義のtrnstring定義コマンドの-Oオプションで指定する1文字目から4文字目

A'

pdls -d trnコマンドの-aオプションを実行したときに表示されるENVGRPの1文字目から4文字目

B

eetrnlstrコマンドを実行したときに表示されるXIDの25文字目から40文字目

B'

pdls -d trnコマンドの-aオプションを実行したときに表示されるXIDの1文字目から16文字目

C

eetrnlstrコマンドを実行したときに表示されるXIDの73文字目から88文字目

C'

pdls -d trnコマンドの-aオプションを実行したときに表示されるXIDの18文字目から33文字目

A,A',B,B',C,およびC'に該当する文字の例を次に示します。

A:トランザクション関連定義のtrnstring定義コマンドの指定例

[図データ]

B,C:「eetrnlstr -g サービスグループ名 -t -i」と指定した場合の出力形式の例

[図データ]

A',B',C':「pdls -d trn -a」と指定した場合の出力形式の例

[図データ]

(b) TP1/EE 01-02以降でトランザクションを確認する方法

次に示す条件が成り立つ場合,TP1/EEのトランザクションがHiRDB上で実行されていることを確認できます。

A=A'かつB=B'

A,A',B,およびB'の内容を次に示します。

A

トランザクション関連定義のtrnstring定義コマンドの-Oオプションで指定する1文字目から4文字目

B

eetrnlstrコマンドを実行したときに表示されるHXIDの1文字目から33文字目

A'

pdls -d trnコマンドの-aオプションを実行したときに表示されるENVGRPの1文字目から4文字目

B'

pdls -d trnコマンドの-aオプションを実行したときに表示されるXIDの1文字目から33文字目

A,A',B,およびB'に該当する文字の例を次に示します。

A:トランザクション関連定義のtrnstring定義コマンドの指定例

[図データ]

B:「eetrnlstr -g サービスグループ名 -t -i」と指定した場合の出力形式の例

[図データ]

A',B':「pdls -d trn -a」と指定した場合の出力形式の例

[図データ]

(4) コーディング例

C言語またはCOBOL言語を使用したUAPのコーディング例については,マニュアル「TP1/Server Base Enterprise Option プログラム作成の手引」を参照してください。