4.5.10 チェックポイントダンプ取得契機のスキップ回数の監視

UAPの無限ループなどが発生すると,チェックポイントダンプの取得処理が連続してできない(チェックポイントダンプ取得契機がスキップされる)ことがあります。チェックポイントダンプが取得できないままオンライン処理を続行すると,回復に必要なシステムジャーナルファイルが多くなり,最終的には使用できるシステムジャーナルファイルが不足して,システムダウンすることがあります。

チェックポイントダンプ取得契機のスキップ回数を監視することで,このようなシステムダウンを防止できます。これによって,チェックポイントダンプ取得契機のスキップが一定の回数に達した場合に,スキップ要因となっているトランザクションの情報をKFCA32550-Iメッセージで表示し,トランザクションの実行プロセスを強制的に停止して,トランザクションを決着(コミットまたはロールバック)します。

ここでは,チェックポイントダンプ取得契機のスキップ回数を監視するために必要な定義などについて説明します。

<この項の構成>
(1) 必要な定義
(2) トランザクションを決着できない場合
(3) スキップ回数の上限値の見積もり式と算出例

(1) 必要な定義

チェックポイントダンプサービス定義に次のオペランドを指定します。

jnl_cdskip_limitオペランドでは,スキップ回数の上限値を指定します。このオペランドに指定したスキップ回数に達した場合は,スキップ要因となっているトランザクションの情報が表示され,トランザクションの実行プロセスが強制停止されます。その後,チェックポイントダンプの取得が完了するまで,スキップが発生するごとに,この処理は繰り返し実行されます。スキップ回数は,チェックポイントダンプの取得完了時に0が設定されます。

jnl_cdskip_msgオペランドでは,スキップ発生時にスキップ要因のトランザクションの情報を表示するかどうかを指定します。

これらのオペランドは,トランザクションサービス用のチェックポイントダンプサービス定義(jnl_objservernameオペランドに_tjlを指定)にだけ指定できます。オペランドの詳細については,マニュアル「OpenTP1 システム定義」を参照してください。

(2) トランザクションを決着できない場合

スキップ回数を監視してトランザクション実行プロセスを強制停止しても,次に示す場合はトランザクションの決着ができないことがあります。

(3) スキップ回数の上限値の見積もり式と算出例

ここでは,jnl_cdskip_limitオペランドに指定するスキップ回数の上限値の見積もり式と算出例について説明します。

(a) 見積もり式

チェックポイントダンプ取得契機のスキップ回数の上限値は,次の見積もり式を目安に指定します。

↓(a×b÷c)×d↓

(凡例)
a:システムジャーナルサービス定義に指定した,ONL指定のjnladdfg定義コマンドの数
b:システムジャーナルファイルの総ブロック数
総ブロック数は,次の計算式で求められます。

↓システムジャーナルファイルのサイズ÷システムジャーナルサービス定義のjnl_max_datasizeオペランドの指定値↓

システムジャーナルファイルのサイズが異なる場合は,全システムジャーナルファイルの平均サイズを求めて計算してください。
c:システムジャーナルサービス定義のjnl_cdintervalオペランドの指定値
d:チェックポイントダンプ取得契機のスキップを許容する割合(余裕値)
  • 有効保証世代数が1の場合:0.333以下を指定
  • 有効保証世代数が2の場合:0.167以下を指定
↓↓:小数点以下を切り捨てます。
(b) 算出例

ここでは,次の条件を満たす算出例について説明します。( )内の番号は,以降に示す図中の番号と対応しています。

計算式中のbから,システムジャーナルファイルの総ブロック数は,↓68157440÷32000↓=2129になります。この値と,ONL指定のjnladdfg定義コマンドの数3,jnl_cdintervalオペランドの指定値1000,およびチェックポイントダンプ取得契機のスキップを許容する割合0.333を用いると,次のように計算式が成り立ちます。

↓(3×2129÷1000)×0.333↓=2

つまり,jnl_cdskip_limitオペランドに指定するスキップ回数の上限値は2になります。

以降,この計算式の考え方について説明します。

計算式(↓(a×b÷c)×d↓)の考え方
ここでは,次の図に示す例で,スキップ回数の上限値の見積もり式の考え方を説明します。

図4-10 スキップ回数の上限値の考え方の例

[図データ]
計算式中の「(a×b÷c)」について説明します。
この例ではファイルグループが3世代であるため,全体では,2129×3=6387ブロックとなります。jnl_cdintervalオペランドの指定値が1000ブロックであるため,6387÷1000=6.387となり,システムジャーナルファイルのファイルグループ「JNL1」から「JNL3」の最終ブロックに出力するまで,最低6回のチェックポイントダンプ取得契機が発生します。
処理中のトランザクションの情報が取得される場所によって,チェックポイントダンプ取得契機のスキップ回数は変動します。スキップ回数は,ファイルグループ「JNL1」の最終ブロック(図中のチェックポイントダンプ取得契機2)で取得された場合は最低4回(図中のチェックポイントダンプ取得契機3~6),最初のブロック(図中のチェックポイントダンプ取得契機1)で取得された場合は最低5回(図中のチェックポイントダンプ取得契機2~6)となります。このため,4回目や5回目のスキップ発生時にシステムジャーナルファイルのファイルグループとしてスワップ先がなくなり,システムがダウンします。つまり,システムダウンを回避するためには,スキップ回数の上限を3回以下にする必要があります。
なお,システムジャーナルファイルのファイルグループは,チェックポイントダンプの取得によってファイルグループ内の情報が不要になり,アンロードが実施されるとスワップできる状態となります。
計算式中の「(a×b÷c)」の算出結果に,チェックポイントダンプ取得契機のスキップを許容する割合(この場合は0.333)を乗じると,スキップ回数の上限値(この場合は2)が決定します。