Hitachi

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


6.6.5 DBキュー読み出しサーバ変更機能の運用

DBキューからメッセージを読み出すサーバを変更する場合の運用方法について説明します。

〈この項の構成〉

(1) 読み出し先DBキューのステータス

読み出し先DBキューのステータスとは,DBキューからメッセージを読み出すサーバを示す情報です。この情報は,DBキュー読み出しサーバを変更する際の判断基準となります。

(a) 読み出し先DBキューのステータスの種類

読み出し先DBキューのステータスには,次の3種類があります。

  • 自サーバ読み出し

    自システムのサーバで,DBキューからメッセージを読み出す状態のことです。

  • 他サーバ読み出し

    自システム以外のサーバで,DBキューからメッセージを読み出す状態のことです。

  • なし

    DBキューからメッセージを読み出すサーバが存在しない状態のことです。

注意事項

「自サーバ読み出し」と「他サーバ読み出し」のステータスは,相対的な関係にあります。例えば,次に示す図では,読み出しサーバ変更後のDBキューのステータスは,サーバ1側から見た場合は「他サーバ読み出し」となり,サーバ2側から見た場合は「自サーバ読み出し」となります。

[図データ]

(b) 読み出し先DBキューのステータスの変更

読み出し先DBキューのステータスは,次に示すタイミングで「自サーバ読み出し」に変更されます。

  • DBキュー機能関連定義のdbqgrpdef定義コマンドの-oオプションにmy(自サーバ読み出し)を指定したTP1/EE(読み出しサーバ)が正常開始したとき

  • eedbqchgrコマンドを実行して読み出しサーバを変更したとき

(2) TP1/EEの開始モードと読み出し先DBキューのステータスの遷移

TP1/EE(DBキュー読み出しサーバ)の開始モードと,読み出し先DBキューのステータスの遷移を次の表に示します。

表6‒18 TP1/EEの開始モードと読み出し先DBキューのステータスの遷移

項番

TP1/EEの開始モード

dbqgrpdef定義コマンドの-oオプションの指定値

読み出し先DBキューのステータス

サーバ開始前

サーバ開始時

1

正常開始または強制正常開始

my(自サーバ読み出し)

なし

自サーバ読み出し

2

自サーバ読み出し

自サーバ読み出し

3

他サーバ読み出し

(読み出しサーバがTP1/EEの場合)

自サーバ読み出し

4

他サーバ読み出し

(読み出しサーバがTP1/EE以外の場合)

他サーバ読み出し※1

5

other(他サーバ読み出し)

なし

なし

6

自サーバ読み出し

なし

7

他サーバ読み出し

他サーバ読み出し

8

再開始

my(自サーバ読み出し)

なし

なし※2

9

自サーバ読み出し

自サーバ読み出し

10

他サーバ読み出し

他サーバ読み出し

11

other(他サーバ読み出し)

なし

なし

12

自サーバ読み出し

自サーバ読み出し

13

他サーバ読み出し

他サーバ読み出し

注※1

DBキュー読み出しサーバを,TP1/EE以外の製品(Cosminexus Reliable Messagingなど)からTP1/EEに変更することはできません。したがって,正常開始時または強制正常開始時でも,読み出し先DBキューのステータスは変更されません。

注※2

読み出し先DBキューのステータスが「なし」である状態が続くと,DBキューが未読み出しメッセージで満杯になる現象が発生するおそれがあります。この現象を回避するために,DBキュー機能関連定義のdbq_readcheckmsg_intervalオペランドで,DBキュー読み出しサーバが存在しないことを警告するKFSB45612-Wメッセージを出力するように指定してください。

(3) 読み出し先DBキューのステータスの遷移例

読み出し先DBキューのステータスの遷移例について説明します。

(a) 「自サーバ読み出し」のステータスで自サーバが正常終了する場合

「自サーバ読み出し」のステータスで自サーバが正常終了する場合の,読み出し先DBキューのステータスの遷移を次の図に示します。

図6‒9 「自サーバ読み出し」のステータスで自サーバが正常終了する場合

[図データ]

  1. サーバ1を正常開始します。

    dbqgrpdef定義コマンドの-oオプションにmyを指定することで,DBキュー1のステータスは「自サーバ読み出し」になります(表6-18の項番1)。

  2. サーバ1でDBキュー1からメッセージを読み出します。

  3. サーバ1を正常終了します。

  4. サーバ1を再度正常開始します。

    dbqgrpdef定義コマンドの-oオプションにmyを指定しているため,DBキュー1のステータスは「自サーバ読み出し」のままとなります(表6-18の項番2)。

(b) eedbqchgrコマンドを実行して読み出しサーバを変更する場合

eedbqchgrコマンドを実行して読み出しサーバを変更する場合の,読み出し先DBキューのステータスの遷移を次の図に示します。

図6‒10 eedbqchgrコマンドを実行して読み出しサーバを変更する場合

[図データ]

  1. サーバ1を正常開始します。

    dbqgrpdef定義コマンドの-oオプションにmyを指定することで,DBキュー1のステータスは「自サーバ読み出し」になります(表6-18の項番1)。

  2. サーバ1でDBキュー1からメッセージを読み出します。

  3. サーバ2でeedbqchgrコマンドを実行して,DBキュー読み出しサーバをDBキュー2に変更します。

    DBキュー1のステータスは「他サーバ読み出し」(サーバ2側から見た場合は「自サーバ読み出し」)に変更されます。

  4. サーバ1を正常終了します。

  5. サーバ2でDBキュー1からメッセージを読み出します。

  6. サーバ1を再度正常開始します。

    dbqgrpdef定義コマンドの-oオプションにmyを指定することで,DBキュー1のステータスは「自サーバ読み出し」に変更されます(表6-18の項番3)。

(c) 「他サーバ読み出し」のステータスで他サーバが正常終了する場合

「他サーバ読み出し」のステータスで他サーバが正常終了する場合の,読み出し先DBキューのステータスの遷移を次の図に示します。

図6‒11 「他サーバ読み出し」のステータスで他サーバが正常終了する場合

[図データ]

  1. サーバ1を正常開始します。

    dbqgrpdef定義コマンドの-oオプションにmyを指定することで,DBキュー1のステータスは「自サーバ読み出し」になります(表6-18の項番1)。

  2. サーバ1でDBキュー1からメッセージを読み出します。

  3. サーバ2でeedbqchgrコマンドを実行して,DBキュー読み出しサーバをサーバ2に変更します。

    DBキュー1のステータスは「他サーバ読み出し」(サーバ2側から見た場合は「自サーバ読み出し」)に変更されます。

  4. サーバ2でDBキュー1からメッセージを読み出します。

  5. サーバ2を正常終了します。

  6. サーバ1でeedbqchgrコマンドを実行して,DBキュー読み出しサーバを割り当てます。

    DBキュー1のステータスは「自サーバ読み出し」に変更されます。

(d) 「自サーバ読み出し」のステータスで,正常開始時に「他サーバ読み出し」を指定する場合

「自サーバ読み出し」のステータスで,正常開始時に「他サーバ読み出し」を指定する場合の,読み出し先DBキューのステータスの遷移を次の図に示します。

図6‒12 「自サーバ読み出し」のステータスで,正常開始時に「他サーバ読み出し」を指定する場合

[図データ]

  1. サーバ2を正常開始します。

    サーバ2でdbqgrpdef定義コマンドの-oオプションにmyを指定することで,DBキュー1のステータスは,サーバ1側から見た場合は「他サーバ読み出し」(サーバ2側から見た場合は「自サーバ読み出し」)になります(表6-18の項番1)。

  2. サーバ2でDBキュー1からメッセージを読み出します。

  3. サーバ1でeedbqchgrコマンドを実行して,DBキュー読み出しサーバをサーバ1に変更します。

    DBキュー1のステータスは「自サーバ読み出し」に変更されます。

  4. サーバ1でDBキュー1からメッセージを読み出します。

  5. サーバ1を正常終了します。

  6. サーバ1を再度正常開始します。

    dbqgrpdef定義コマンドの-oオプションにotherを指定することで,DBキュー1のステータスは「なし」に変更されます(表6-18の項番6)。

  7. サーバ1でeedbqchgrコマンドを実行して,DBキュー読み出しサーバを割り当てます。

    DBキュー1のステータスは「自サーバ読み出し」に変更されます。

(e) DBキューのステータスを変更する前に自サーバが計画停止Bまたはプロセスダウンで終了する場合

DBキューのステータスを変更する前に自サーバが計画停止Bまたはプロセスダウンで終了する場合の,読み出し先DBキューのステータスの遷移を次の図に示します。

図6‒13 DBキューのステータスを変更する前に自サーバが計画停止Bまたはプロセスダウンで終了する場合

[図データ]

  1. サーバ1を正常開始します。

  2. DBキュー1のステータスを変更する前に,サーバ1が計画停止Bまたはプロセスダウンで終了します。

    DBキュー1のステータスは「なし」のままとなります。

  3. サーバ1を再開始します。

    dbqgrpdef定義コマンドの-oオプションにmyを指定していますが,DBキュー1のステータスは「なし」のままとなります(表6-18の項番8)。

    DBキュー1のステータスが「なし」である状態が続いた場合,DBキュー機能関連定義のdbq_readcheckmsg_intervalオペランドに指定した間隔で,KFSB45612-Wメッセージが出力されます。

  4. サーバ1でeedbqchgrコマンドを実行して,DBキュー読み出しサーバを割り当てます。

    DBキュー1のステータスは「自サーバ読み出し」に変更されます。

(f) 自サーバが計画停止Bまたはプロセスダウンで終了し,他サーバが正常終了する場合

自サーバが計画停止Bまたはプロセスダウンで終了し,他サーバが正常終了する場合の,読み出し先DBキューのステータスの遷移を次の図に示します。

図6‒14 自サーバが計画停止Bまたはプロセスダウンで終了し,他サーバが正常終了する場合

[図データ]

  1. サーバ2を正常開始します。

    サーバ2でdbqgrpdef定義コマンドの-oオプションにmyを指定することで,DBキュー1のステータスは,サーバ1側から見た場合は「他サーバ読み出し」(サーバ2側から見た場合は「自サーバ読み出し」)になります(表6-18の項番1)。

  2. サーバ2でDBキュー1からメッセージを読み出します。

  3. サーバ1が計画停止Bまたはプロセスダウンで終了します。

  4. サーバ2を正常終了します。

  5. サーバ1を再開始します。

    dbqgrpdef定義コマンドの-oオプションにmyを指定していますが,DBキュー1のステータスは「他サーバ読み出し」のままとなります(表6-18の項番10)。

  6. サーバ1でeedbqchgrコマンドを実行して,DBキュー読み出しサーバをサーバ1に変更します。

    DBキュー1のステータスは「自サーバ読み出し」に変更されます。

(4) DBキュー読み出しサーバが複数ある場合

DBキューからのメッセージの読み出し処理中にeedbqchgrコマンドを実行すると,二つのサーバが同一のメッセージを読み出すおそれがあります。この現象を回避するために,DBキュー読み出しサーバが複数ある場合,TP1/EEは,最初にコミットしたメッセージ読み出しトランザクションを優先し,その他のサーバのメッセージ読み出しトランザクションをロールバックします。

DBキュー読み出しサーバが複数ある場合の処理の流れを次の図に示します。

図6‒15 DBキュー読み出しサーバが複数ある場合の処理の流れ

[図データ]

  1. サーバ2を正常開始します。

    サーバ2でdbqgrpdef定義コマンドの-oオプションにmyを指定しておきます。

  2. サーバ2で,DBキュー1のメッセージ読み出しトランザクションを開始します。

  3. サーバ1でeedbqchgrコマンドを実行して,DBキュー読み出しサーバをサーバ1に変更します。

  4. サーバ1で,DBキュー1のメッセージ読み出しトランザクションを開始します。

  5. サーバ1で,メッセージ読み出しトランザクションがコミットします。

    コミット後,未読み出しメッセージがなくなるまでメッセージ読み出しトランザクションを繰り返し起動します。

  6. サーバ2で,メッセージ読み出しトランザクションをロールバックします。