スケーラブルデータベースサーバ HiRDB Version 8 システム運用ガイド(UNIX(R)用)

[目次][索引][前へ][次へ]

8.8 UAPの状態監視シンクポイントダンプ有効化のスキップ回数監視機能

UAPが無限ループしてデータベースを更新し続けるとシンクポイントが有効化できないため,上書きできない状態のシステムログファイルが増えてしまいます。上書きできない状態のシステムログファイルが増えて全システムログファイルが上書きできない状態になると,HiRDBが異常終了します。

また,上書きできない状態のシステムログファイルが,全システムログファイルの半分以上になったときにHiRDBが異常終了又は強制終了すると,HiRDBを再開始するときのロールバック処理でシステムログファイルが不足します。この場合,システムログファイルを新規追加しないと,HiRDBを再開始できません。そして,この再開始処理に要する時間も長くなります。

このようなことを防ぐために,HiRDBではシンクポイントダンプ有効化のスキップ回数監視機能を設けています。

<この節の構成>
(1) シンクポイントダンプ有効化のスキップ回数監視機能とは
(2) pd_spd_syncpoint_skip_limitオペランドに指定する値
(3) 計算方法
(4) pd_spd_syncpoint_skip_limitオペランドの値を確認する方法
(5) pd_spd_syncpoint_skip_limitオペランドに指定する値が適切でないと
(6) シンクポイントダンプ有効化のスキップ回数監視機能を使用してはいけない場合
(7) ロールバックの対象にならないトランザクション
(8) スキップ回数にカウントされないケース
(9) 注意事項
(10) HiRDB Datareplicatorを使用している場合の注意事項

(1) シンクポイントダンプ有効化のスキップ回数監視機能とは

UAPの無限ループなどが発生すると,シンクポイントダンプの有効化処理が連続してできないことがあります(シンクポイントダンプの有効化処理が連続してスキップされることがあります)。このスキップ回数がある一定の回数に達した場合,対象トランザクションを強制的に中断してロールバック処理を行います。これをシンクポイントダンプ有効化のスキップ回数監視機能といいます。この機能を使用する場合はpd_spd_syncpoint_skip_limitオペランドを指定します。

(2) pd_spd_syncpoint_skip_limitオペランドに指定する値

通常はpd_spd_syncpoint_skip_limitオペランドに0を指定してください。0を指定すると,スキップ回数の上限値をHiRDBが自動計算します。0を指定して不都合が発生した場合は,(3)に示すどちらかの方法でこのオペランドの値を計算してください。

なお,次に示す条件を一つでも満たす場合は,自動計算よりも(3)の方法で計算した方が,精度が高くなります。

また,次に示す場合は自動計算をやめて(3)の方法で計算してください。

(3) 計算方法

計算方法には次に示す二つの方法があります。どちらかの方法で計算してください。

ここで求めた値より多少小さい値をpd_spd_syncpoint_skip_limitオペランドに指定してください。

(a) 出力されるシステムログ量から計算する方法

次に示す計算式から求めます。

〈計算式〉
{(↑a÷b↑÷c)÷d}−1
a:
データベースの更新量が最も多いトランザクション処理で出力されるシステムログ量と,このトランザクションが稼働中に同時実行するトランザクション処理で出力されるシステムログ量の合計です(単位:バイト)。システムログ量の求め方については,マニュアル「HiRDB Version 8 システム導入・設計ガイド」を参照してください。
●HiRDB Datareplicatorを使用している場合
反映側HiRDBのデータ反映トランザクション処理に時間が掛かる場合,この機能によって反映側HiRDBがデータ反映トランザクションをロールバックすることがあります。したがって,データ反映トランザクション処理で出力されるシステムログ量を加算する必要があります。次に示す計算式で求めた値を加算してください。
データ反映トランザクション処理で出力されるシステムログ量
=Σ(データベースの更新量が最も多いトランザクション処理で出力されるシステムログ量)
ΣはHiRDB Datareplicatorの反映環境定義のcmtintvl(trncmtintvl,tblcmtintvl)オペランドに指定したトランザクション数分の合計を意味しています。
b:
システムログファイルのレコード長です。レコード長はpdloglsコマンドで調べられます。
c:
システムログブロックの平均レコード数です。通常,3×4096÷b程度を目安にしてください。なお,次に示す計算式から正確に求められます。
↑システムログ出力ブロック長の平均値÷b↑
システムログ出力ブロック長の平均値は,統計解析ユティリティのシステムの稼働に関する統計情報(OUTPUT BLOCK LENGTH)から分かります。
d:
pd_log_sdintervalオペランドの第1パラメタ(シンクポイントダンプの取得間隔をシステムログの出力量で指定)の値です。
(b) 全システムログファイルの容量から計算する方法

次に示す計算式から求めます。

〈計算式〉
{(a×b×c)÷d}÷e
a:
HiRDBの稼働中に,スワップ先にできる状態にできるシステムログファイル数です。
b:
システムログファイルのレコード数です。レコード数が各ファイルで異なる場合は平均値を求めてください。
c:
シンクポイントダンプの有効化をスキップしてよい割合です。全システムログファイルに対して,上書きできない状態にしてよいファイルの割合を代入します。
  • HiRDB/シングルサーバの場合は0.333以下の値にしてください。有効保証世代数が2の場合は0.167以下の値にしてください。
  • バックエンドサーバの場合は0.333以下の値にしてください。有効保証世代数が2の場合は0.167以下の値にしてください。
  • ディクショナリサーバの場合は0.5程度にしてください。
  • フロントエンドサーバの場合は0.7程度にしてください。
d:
システムログブロックの平均レコード数です。通常,3×4096÷f程度を目安にしてください。なお,次に示す計算式から正確に求められます。
↑システムログ出力ブロック長の平均値÷f↑
システムログ出力ブロック長の平均値は,統計解析ユティリティのシステムの稼働に関する統計情報(OUTPUT BLOCK LENGTH)から分かります。
e:
pd_log_sdintervalオペランドの第1パラメタ(シンクポイントダンプの取得間隔をシステムログの出力量で指定)の値です。
f:
システムログファイルのレコード長です。レコード長はpdloglsコマンドで調べられます。

(4) pd_spd_syncpoint_skip_limitオペランドの値を確認する方法

稼働中のHiRDBが適用しているシンクポイントダンプ有効化のスキップ回数の上限値は,pdlogls -d spdコマンドで確認できます。pdlogls -d spdコマンドについては,マニュアル「HiRDB Version 8 コマンドリファレンス」を参照してください。

(5) pd_spd_syncpoint_skip_limitオペランドに指定する値が適切でないと

指定値が大き過ぎると,全システムログファイルが上書きできない状態になる可能性があります。この場合,HiRDBは異常終了します。このとき,新規のシステムログファイルを追加しないと,HiRDBを再開始できません。

指定値が小さ過ぎると,強制的にロールバックされるトランザクションが増える可能性があります。

(6) シンクポイントダンプ有効化のスキップ回数監視機能を使用してはいけない場合

  1. 大量更新のバッチ処理で,commit文を発行するまでに出力されるシステムログ量が,全システムログファイルの合計容量の1/3以上となる場合
  2. データベースの更新量が最も多いトランザクションで出力するシステムログ量と,このトランザクションが稼働中に同時実行するトランザクションで出力するシステムログ量の合計が,全システムログファイルの合計容量の1/3以上となる場合
  3. 100,000回を超えるシンクポイントダンプの有効化スキップ回数を監視する場合

なお,システムログ量の求め方については,マニュアル「HiRDB Version 8 システム導入・設計ガイド」を参照してください。

(7) ロールバックの対象にならないトランザクション

シンクポイントの連続スキップ回数がpd_spd_syncpoint_skip_limitオペランドに指定した値を超えても,次に示すトランザクションはロールバックの対象とはなりません。

(8) スキップ回数にカウントされないケース

次に示す場合に実施されるシンクポイントダンプの有効化処理がスキップされたときは,そのスキップは連続スキップ回数としてカウントされません。

(9) 注意事項

HiRDBの稼働中にpdlogswapコマンドを連続して実行すると,上書きできない状態のシステムログファイルが増えてしまうため,現用として使用可能なシステムログファイルが少なくなります。このため,システムログファイル不足によるユニットの異常終了が起こり易くなります。

(10) HiRDB Datareplicatorを使用している場合の注意事項

反映側HiRDBのデータ反映トランザクション処理に時間が掛かる場合,シンクポイントダンプ有効化のスキップ回数監視機能によってデータ反映トランザクションを強制的にロールバックすることがあります。このとき,反映側HiRDBではKFPS00993-I(REQUEST= abnormal_tran_end)メッセージを出力し,反映側HiRDB DatareplicatorではKFRB03007-Wメッセージ及びKFRB03013-Iメッセージを出力します。このときの対処方法を次に示します。

〈手順〉
  1. pdstopコマンドで反映側HiRDBを正常終了します。
  2. pd_spd_syncpoint_skip_limitオペランドの値を変更します。指定値については,「(3)(a)出力されるシステムログ量から計算する方法」を参照してください。
  3. システムログファイルの世代数が次に示す条件式を満たすかどうかを確認してください。満たさない場合は,この条件式を満たすようにシステムログファイルを追加してください。
    変更後のpd_spd_syncpoint_skip_limitオペランドの値≦システムログファイルの世代数÷3
  4. pdstartコマンドで反映側HiRDBを正常開始します。
  5. 反映側HiRDB Datareplicatorのhdsrfctlコマンドで,データ反映トランザクションを再度実行します。
注※
システム構成変更コマンド(pdchgconfコマンド)を使用すると,HiRDBの稼働中にHiRDBシステム定義を変更できるため,HiRDBを正常終了する必要がありません。ただし,このコマンドを使用する場合はHiRDB Advanced High Availabilityが必要になります。HiRDBの稼働中にHiRDBシステム定義を変更する方法については,「9.2 HiRDBの稼働中にHiRDBシステム定義を変更する方法(システム構成変更コマンド)」を参照してください。

シンクポイントダンプ有効化のスキップ回数監視機能によってデータ反映トランザクションが強制的にロールバックされるときの流れを次の図に示します。

図8-13 シンクポイントダンプ有効化のスキップ回数監視機能によってデータ反映トランザクションが強制的にロールバックされるときの流れ

[図データ]