Hitachi

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


3.4.10 DBキュー自動読み出し停止機能

DBキュー自動読み出し停止機能を使用すると,AP間通信をするDBキューのスケジュール状態を読み出し停止にする条件を指定できます。

〈この項の構成〉

(1) TP1/EE起動時の読み出し停止

TP1/EEの起動時にDBキューを読み出し停止にできます。読み出し停止にする条件には,正常開始・再開始のどちらか,または両方を指定できます。ただし,DBキュー自動読み出し停止機能を使用するには,対象のDBキューが,AP間通信をする自システムのTP1/EEが読み出すDBキューである必要があります。

読み出し停止にするための条件は,DBキューごとに個別に指定したり,すべてのDBキューに一括して指定したりできます。

(a) 自動読み出し停止機能の個別指定

TP1/EEの起動時にDBキューを読み出し停止にするかどうかをDBキューごとに個別に指定する場合,dbqdef定義コマンドの-tオプションで指定できます。-tオプションを省略すると,DBキュー機能関連定義のdbq_uap_stopオペランドの指定に従います。なお,ユーザキューアクセスをするDBキューに,dbqdef定義コマンドの-tオプションを指定した場合は,TP1/EEの起動時に定義不正によってエラーになります。

dbqdef定義コマンドの-tオプションの指定値による動作を次の表に示します。

表3‒17 dbqdef定義コマンドの-tオプションの指定値による動作

項番

dbqdef定義コマンドの-tオプションの指定値

正常開始時のDBキューの状態

再開始時のDBキューの状態

1

-tオプションを省略

DBキュー機能関連定義のdbq_uap_stopオペランドの指定に従う

2

no

起動

前回の状態で開始

3

start

読み出し停止

4

restart

起動

読み出し停止

5

all

読み出し停止

注※

オンラインが停止した原因がDBキューのメッセージ読み出しトランザクションだった場合,再開始時(プロセスの回復時)にはdbqdef定義コマンドの-tオプションの指定値に関係なく,該当するDBキューを読み出し停止にします。

(b) 自動読み出し停止機能の一括指定

TP1/EEの起動時にすべてのDBキューを一括して読み出し停止にする場合,DBキュー機能関連定義のdbq_uap_stopオペランドで指定できます。このオペランドを省略した場合は,デフォルト値としてnoが使用されます。なお,dbqdef定義コマンドの-tオプションを同時に指定したときは,dbqdef定義コマンドの-tオプションが有効になります。

DBキュー機能関連定義のdbq_uap_stopオペランドの指定値による動作を次の表に示します。

表3‒18 DBキュー機能関連定義のdbq_uap_stopオペランドの指定値による動作

項番

DBキュー機能関連定義のdbq_uap_stopオペランドの指定値

正常開始時のDBキューの状態

再開始時のDBキューの状態

1

no

起動

前回の状態で開始

2

start

読み出し停止

3

restart

起動

読み出し停止

4

all

読み出し停止

注※

オンラインが停止した原因がDBキューのメッセージ読み出しトランザクションだった場合,再開始時(プロセスの回復時)にはDBキュー機能関連定義のdbq_uap_stopオペランドの指定値に関係なく,該当するDBキューを読み出し停止にします。

また,DBキュー機能関連定義のdbq_uap_stopオペランドと,dbqdef定義コマンドの-tオプションの関係について次の表に示します。

表3‒19 DBキュー機能関連定義のdbq_uap_stopオペランドと,dbqdef定義コマンドの-tオプションの関係

項番

DBキュー機能関連定義のdbq_uap_stopオペランド

dbqdef定義コマンドの-tオプション

DBキューに有効となる定義

1

省略

省略

DBキュー機能関連定義のdbq_uap_stopオペランドのデフォルト値(no)

2

指定

dbqdef定義コマンドの-tオプション

3

指定

省略

DBキュー機能関連定義のdbq_uap_stopオペランド

4

指定

dbqdef定義コマンドの-tオプション

(2) 障害発生時の自動読み出し停止

DBキュー機能では,メッセージ読み出しトランザクションで障害が発生することがあります。この障害には二つのケースがあり,DBキュー機能関連定義のdbq_read_error_uap_stopオペランドで指定した障害ケースが発生した場合は,DBキューを読み出し停止にできます。ただし,障害発生時の自動読み出し停止ができるのは,AP間通信をするDBキューのメッセージ読み出しトランザクションだけです。

AP間通信をするDBキューのメッセージ読み出しトランザクションの流れと障害の発生タイミングを次の図に示します。図中では,障害の発生タイミングに1.〜5.の番号を記載しています。

図3‒39 メッセージ読み出しトランザクションの流れと障害の発生タイミング

[図データ]

dbq_read_error_uap_stopオペランドに1を指定した場合,図中の1.,2.,および4.で障害が発生したときにDBキューを読み出し停止にします。dbq_read_error_uap_stopオペランドに2を指定した場合,図中の1.〜5.で障害が発生したときにDBキューを読み出し停止にします。

図中の1.〜5.で発生するおそれのある障害の詳細は次のとおりです。

  1. メッセージ読み出しSQLエラー

  2. サービス関数障害でスレッドダウン(thkind引数にEETRN_KILLまたはEETRN_ABRTを設定し,スレッドの強制終了指定をしたee_trn_chained_rollback関数を発行した場合は含まない)

  3. 関数(thkind引数にEETRN_KEEPを設定したee_trn_chained_commit関数,またはee_trn_chained_rollback関数)による同期点処理障害

  4. メッセージ読み出し通番の更新SQLエラー

  5. サービス関数のリターン時の同期点処理障害

なお,dbq_read_error_uap_stopオペランドに2を指定した場合,図中の3.が発生してもDBキューを読み出し停止にはしません。図中の3.では,関数がエラーリターンするため,リターンコードを参照してユーザが措置を決定します。

定義の指定による障害発生時の自動読み出し停止の動作を次の表に示します。

表3‒20 定義の指定による障害発生時の自動読み出し停止の動作

DBキュー機能関連定義のdbq_read_error_uap_stopオペランドの指定値

障害の発生タイミング(図中の番号)によるDBキューの状態

1.

2.

3.

4.

5.

1

読み出し停止

読み出し停止

読み出し停止しない

読み出し停止

読み出し停止しない

2

読み出し停止