Hitachi

OpenTP1 Version 7 分散トランザクション処理機能 OpenTP1 解説


4.2.2 システムジャーナルファイル

〈この項の構成〉

(1) システムジャーナルファイルの目的

オンラインシステムが停止した場合の全面回復や,UAPに障害が発生した場合のUAP部分回復に必要な,回復用の履歴情報を格納します。回復用の履歴情報には,同期点ジャーナル回復用ジャーナルがあります。全面回復の処理では,最新の世代のチェックポイントダンプと,最新の世代のチェックポイントダンプ取得以降に取得した回復用のジャーナルを基にします。UAPの部分回復ではチェックポイントダンプを使用しないで,回復用のジャーナルだけで処理します。チェックポイントダンプについては,「4.2.3 チェックポイントダンプファイル」を参照してください。

回復用のジャーナルとは別に,システムをチューニングするための統計用ジャーナルや,UAPの任意の履歴情報であるユーザジャーナルも格納します。

(2) システムジャーナルファイルの構成

OpenTP1は,システムジャーナルファイルをファイルグループという論理的な単位で運用します。これに対して,実際にジャーナルを取得するファイル実体を,物理ファイルといいます。通常一つのファイルグループは,一つの物理ファイルで構成しますが,ジャーナルファイル二重化機能を使用する場合は,一つのファイルグループを二つの物理ファイルで構成します。この場合,一つのファイルグループ中の,二つの物理ファイルをA系,B系と呼んで区別します。

システムジャーナルサービス定義では,ファイルグループを少なくとも二つ以上指定し,ファイルグループと物理ファイルの対応関係を指定してください。さらにシステムジャーナルサービス定義でファイルグループに任意の名称を指定してください。このファイルグループ名を使用することで,A系,B系の物理ファイルを同時にオープン,クローズするなど,ファイルグループ単位に運用できます。

(3) システムジャーナルファイルの二重化

一つのファイルグループを二つの物理ファイルで構成してシステムジャーナルファイルを運用できます。これをシステムジャーナルファイルの二重化といいます。この場合,OpenTP1はA系,B系に同じジャーナルを取得します。何らかの異常が発生し,その処理のためにジャーナルを読み込むとき,片方の系が障害でも残りの系を読めるため,信頼性を向上できます。

組になるA系とB系の物理ファイルは,同時に障害にならないように,なるべくディスクを分けてください。また,A系とB系の物理ファイルの容量は,一致していなくてもかまいませんが,容量が一致していない場合には,容量の少ないファイルに合わせてジャーナルを取得します。なるべく容量を一致させてください。

システムジャーナルファイルを二重化した場合,片系運転可片系運転不可を選択できます。ファイルグループを構成する二つの物理ファイルのうち,一つが使用できる状態ならファイルグループを使用可能な状態とすることを片系運転可といいます。ファイルグループを構成する二つの物理ファイルが両方使用できる状態の場合にだけ,ファイルグループを使用可能な状態とすることを片系運転不可といいます。

例えば,ファイルグループfg1,fg2があり,それぞれが物理ファイルfg1a,fg1b,fg2a,fg2bで構成されているとします。物理ファイルの障害は,ディスクデバイス全体の障害である場合が多く,同一ディスク上の物理ファイルがすべて障害になることが多いのです。A系の物理ファイルfg1aとfg2aが障害になった場合,片系運転不可では,使用可能なファイルグループがなくなるので,OpenTP1は異常終了します。このため,障害を対策後,全面回復することになります。片系運転可では,B系の物理ファイルfg1b,fg2bが正常な限りファイルグループは使用可能なので,OpenTP1は続行可能です。

このように片系運転可とは,片方の系が障害になっても,その障害が対策されるまでの間に残りの系で運転を続行させるものです。ただし,片系運転可では,一時的に二重化されない期間が発生するため,この部分は信頼性が低下します。片系運転可,片系運転不可はシステムジャーナルサービス定義で指定します。

片系運転可,片系運転不可を次の図に示します。

図4‒6 片系運転可,片系運転不可

[図データ]

(4) システムジャーナルファイルの並列アクセス機能

一つのファイルグループを複数の要素ファイルで構成して,システムジャーナルファイルを使えます。この機能をシステムジャーナルファイルの並列アクセス機能といいます。並列アクセス機能で二重化した場合のファイルグループの構成を次の図に示します。

図4‒7 並列アクセス機能使用時のファイルグループの構成図(jnl_max_file_dispersion=3の場合)

[図データ]

並列アクセス機能の概要を次の図に示します。

図4‒8 並列アクセス機能の概要(jnl_max_file_dispersion=3の場合)

[図データ]

ジャーナルの入出力が集中すると,ディスクへの負荷が増大しI/O性能が低下します。このような場合に,ファイルグループを複数の要素ファイルで構成して,システムジャーナルファイルへ並行にアクセスできるようにすると,ジャーナルの入出力の性能を上げることができます。

一つのファイルグループを構成する物理ファイルは,SCSIインタフェースやハードディスクが重なるようになっていてもかまいませんが,これらには並行にアクセスできないため,並列アクセス機能の効果を十分に発揮できません。SCSIインタフェースやハードディスクは,重ならないようにしてください。また,複数の物理ファイルの容量は一致していなくてもかまいませんが,一致していない場合,OpenTP1は最も少ない物理ファイルの容量を要素ファイルの容量と見なします。資源を効率良く使えるように,物理ファイルの容量はできるだけ一致させることをお勧めします。

システムジャーナルファイルの並列アクセス機能では,システムジャーナルファイルの障害などで,並行してアクセスできる要素ファイルの数(以降,並列アクセス数といいます)が減ります。これによるジャーナル入出力性能の低下を防ぐため,最低限保証したい並列アクセス数を指定できます。この最低限保証したい並列アクセス数を,最小分散数といいます。また,最大でどれだけ並列アクセスするかを示す並列アクセス数を,最大分散数といいます。

システムジャーナルサービス定義でファイルグループを指定するときに,要素ファイル名を付けます。さらに,システムジャーナルサービス定義のjnl_max_file_dispersionオペランドに最大分散数を,jnl_min_file_dispersionオペランドに最小分散数を指定しておきます。

(5) 取得するジャーナルの種類

(a) 同期点ジャーナル

全面回復時やUAP部分回復時に,未決着のトランザクションを決着して資源の整合性を回復する必要があります。トランザクションが決着しているかいないか,同期点での処理がどこまで進んでいるのかを判断するために,2相コミットの過程で履歴情報を取得します。資源の回復が必要かどうかを判定するこの履歴情報を,同期点ジャーナルといいます。同期点ジャーナルには,PJHJBJTJDJがあります。同期点ジャーナルを次の表に示します。

表4‒5 同期点ジャーナル

種別

内容

PJ

ルートトランザクションブランチ,トランザクションブランチがコミット処理を開始したときに出力されます。

HJ

トランザクションブランチがコミット準備完了の状態になったときに出力されます。

ルートトランザクションブランチからは出力されません。

BJ

トランザクションをロールバックしたときに出力されます。

ルートトランザクションブランチ,トランザクションブランチから出力されます。

TJ

トランザクションの同期点処理を終了したときに出力されます。

ルートトランザクションブランチ,トランザクションブランチから出力されます。

DJ

トランザクションをヒューリスティック決定したときに出力されます。

ルートトランザクションブランチ,トランザクションブランチから出力されます。

(b) 回復用ジャーナル

全面回復時や部分回復時に,同期点ジャーナルによって資源を回復する必要がある場合,直ちにデータベースや回復対象テーブルのデータを回復します。資源の整合性を回復するため,資源の更新情報を取得します。この更新情報を,回復用ジャーナルといいます。回復用ジャーナルには,回復する資源の種類によって,FJCJがあります。回復用ジャーナルを次の表に示します。

表4‒6 回復用ジャーナル

種別

内容

FJ

DAMファイルの更新情報です。全面回復時とUAP部分回復時に,このジャーナルを基にDAMファイルを回復します。

CJ

MCFサービスとTAMサービスが管理する回復対象テーブルの更新情報です。同期点取得時などに取得します。全面回復時にこのジャーナルを基に回復テーブルを回復します。

トランザクション管理サービスが管理する回復対象テーブルの更新情報です。同期点取得時などに取得します。全面回復時にこのジャーナルを基に回復テーブルを回復します。

(c) 統計用ジャーナル

システムチューニングに必要な統計用の履歴情報です。統計用ジャーナルには,MJIJGJOJAJSJがあります。

MJ,IJ,GJ,OJ,AJは,MCFを使用して他システムとメッセージ送受信するときにだけ取得します。MJは,mcftactmjコマンドを入力して取得を開始し,mcftdctmjコマンドを入力して取得を終了します。IJ,GJ,OJを取得するかどうかは,MHPのアプリケーションごとにアプリケーション属性定義で指定します。AJを取得するかどうかは,論理端末ごとに論理端末定義で指定します。

SJはOpenTP1システム全体の統計情報です。SJのうちシステム統計情報は,統計取得用の運用コマンドを入力すると,それ以降ユーザの指定した一定間隔で取得します。トランザクション統計情報は,トランザクションサービス定義で取得するかどうかを指定します。統計用ジャーナルを次の表に示します。

表4‒7 統計用ジャーナル

種別

内容

MJ

入力編集前のメッセージ入力情報と,出力編集後のメッセージ出力情報です。

IJ

受信メッセージを入力キューに格納する直前に取得するメッセージ入力情報です。

GJ

MHPが受信メッセージを受け取る直前に取得するMHP受信情報です。

OJ

送信メッセージを出力キューに格納した直後に取得するメッセージ出力情報です。

AJ

メッセージを他システムに送信したあと,他システムからの送信完了報告を受信した直後に取得する送信完了情報です。

SJ

OpenTP1の稼働状態全般を把握するための稼働統計情報です。システム統計情報とトランザクション統計情報があります。システム統計情報は,システムサービスとUAPに関する統計情報です。一定時間ごとにOpenTP1の状態を取得します。トランザクション統計情報は,トランザクション処理に関する統計情報です。トランザクションブランチごとに同期点処理が完了した時点で取得します。

(d) ユーザジャーナル(UJ)

UAPから関数を呼び出してシステムジャーナルファイルに出力する,ユーザ任意の情報です。ユーザジャーナルは,システムのチューニングやユーザ業務そのものに利用します。ユーザジャーナルは,トランザクション内,またはトランザクション外で出力できます。

(6) システムジャーナルファイルの状態

システムジャーナルファイルのファイルグループの状態は,次の2種類に分けられます。

使用可能状態のファイルグループは,現用,または待機として,使用不可能状態のファイルグループは予約として,状態を管理します。なお,要素ファイルの必要数は,システムジャーナルサービス定義に指定した値で決まります。

システムジャーナルファイルには,予約以外のファイルグループが二つ以上必要です。

OpenTP1を正常開始で開始すると,システムジャーナルサービス定義で指定したファイルグループのうち,ONLと指定したファイルグループがすべてオープンされます。オープンされたファイルグループのうち,最初に指定したファイルグループが現用となって,そのほかは待機となります。また,構成する物理ファイルが必要な数に満たなかったファイルグループや,ONLと指定しなかったファイルグループは,予約となります。

システムジャーナルファイルでは,常に現用のファイルグループにジャーナルが出力されます。現用のファイルグループが満杯になると,待機のファイルグループのうち一つを現用に切り替えます。このとき,以前の現用ファイルグループは,待機ファイルグループになります。使用可能状態のすべてのファイルグループが満杯となると,最初のファイルグループに戻ってジャーナルを出力します。

(7) システムジャーナルファイルのアンロード

待機のシステムジャーナルファイルのジャーナルは,ファイルに複写しておく必要があります。ファイルにジャーナルを複写することを,アンロードといいます。システムジャーナルファイルのアンロードには,jnlunlfgコマンドを使用するか,またはシステムジャーナルサービス定義のjnl_auto_unloadオペランドにYを指定して自動アンロード機能を使用します。ユーザファイルの回復や統計用ジャーナルの編集,ユーザジャーナルの運用は,ファイルにアンロードしたジャーナルを使います。ジャーナルをアンロードしたファイルを,アンロードジャーナルファイルといいます。OpenTP1は,ファイルグループがアンロードされているかどうかチェックして,アンロードされていない待機ファイルグループはスワップ先にしません。ファイルグループがアンロードされているかどうか,チェックすることをアンロードチェックといいます。スワップ先がない場合には,OpenTP1は異常終了します。OpenTP1が異常終了したときの処置は,「5.3 障害対策の概要」を参照してください。

(a) アンロードチェックの抑止

通常はアンロード待ち状態になる待機のファイルグループを,現用のまま使える指定ができます。これをアンロードチェックの抑止といいます。アンロードチェックを抑止する場合は,システムジャーナルサービス定義のjnl_unload_checkオペランドにNを指定してください。

アンロードチェックを抑止している場合は,OpenTP1の稼働中にジャーナルファイルをコマンドでアンロードしないでください。アンロードチェックの抑止を指定した場合にアンロードを実行するときは,いったんjnlclsfgコマンドで該当するファイルグループをクローズしてから,アンロードしてください。

アンロードチェックを抑止するとアンロードジャーナルファイルは作成されないため,アンロードジャーナルファイルを入力とするジャーナル編集コマンド(jnlcolcコマンド,jnlsttsコマンドなど)は実行できません。

アンロードチェックを抑止した場合は,ファイルグループの状態をjnllsコマンドで確認すると,アンロード待ち状態が出力されることがあります。アンロード待ち状態が出力された場合でも,実際は現用として使われています。

(8) システムジャーナルファイルのスワップ

待機状態のシステムジャーナルファイルには,スワップ先にできるものとスワップ先にできないものとがあります。スワップ先にできるシステムジャーナルファイルは,アンロード済みで,回復に必要なジャーナルがないファイルグループです。アンロードしていないファイルグループ,または回復に必要なジャーナルがあるファイルグループは,スワップ先にできません。回復に必要なジャーナルがあるかどうかのチェックについては,「4.2.3(4) 複数世代保証機能」を参照してください。システムジャーナルファイルのスワップ先がない場合には,OpenTP1は異常終了します。OpenTP1が異常終了したときの処置は,「5.3 障害対策の概要」を参照してください。システムジャーナルファイルのスワップを次の図に示します。

図4‒9 システムジャーナルファイルのスワップ

[図データ]

(9) 全面回復時の予約状態のファイルのオープン

オンライン障害発生後の全面回復時,OpenTP1はトランザクションを決着するためのジャーナルを出力します。このとき,システムジャーナルファイルにジャーナルを格納しきれなくなった場合には,OpenTP1は再び異常終了します。全面回復時にジャーナルファイルが不足したとき,予約状態のファイルをオープンして,ジャーナルを格納できます。予約状態のファイルをオープンするかどうか,システムジャーナルサービス定義で指定します。なお,アンロードすればスワップ先としてジャーナルを格納できる,上書きできる状態のシステムジャーナルファイルがある場合は,予約状態のファイルをオープンしません。jnlunlfgコマンドでジャーナルファイルをアンロードしてください。

(10) ジャーナル容量に対する考え方

(a) 理想的なジャーナル容量

理想的なジャーナル容量は,OpenTP1起動から停止までの間に取得されるジャーナルすべてを格納できるだけの容量です。これが実現できると,OpenTP1稼働中にジャーナルをアンロードする運用が不要となり,OpenTP1停止後にジャーナルファイルのメンテナンスができます。

理想となる目安:
(トランザクション当たりの平均ジャーナル量)
×(オンライン開始から終了までの総トランザクション数)
+オンライン開始から終了までにdcstatsコマンドによって取得する統計情報のジャーナル量
+(UAPのOpenTP1のRPC,1回当たりのジャーナル量)
×(オンライン開始から終了までのUAPから発行するOpenTP1のRPCの回数の総和)

ジャーナルの容量の計算式の詳細は,マニュアル「OpenTP1 運用と操作」のシステムジャーナルファイルのサイズの見積もり式の記述を参照してください。

(b) 現実的なジャーナル容量の見積もり

実際の運用では,24時間稼働,ディスク容量を確保できないなどの理由で理想どおりのジャーナル容量を用意できないことがあります。

OpenTP1は,ジャーナルをアンロード,またはステータスを変更することでジャーナルファイルを再利用可能としており,この機能を使用することで理想とする容量より小さいジャーナル容量で運用を行えます。

ジャーナルのアンロードを行う場合,アンロードするタイミングをどのようにするかのシステム運用設計が必要です。例えば,次のような運用が考えられます。

  • ジャーナルファイルがスワップした時点のメッセージ(KFCA01222-I)をトリガーにアンロードする。

  • OpenTP1が提供する自動アンロード機能を使用することでアンロードさせる。

  • 運用でまとめてアンロードする(例えば,午前と午後の間にアンロードするなど)。

ジャーナルのアンロードを行わないで,ジャーナルを捨てる運用を行う場合,jnlchgfgコマンドで強制的にアンロード済みの状態に変更したり,システムジャーナルサービス定義のjnl_unload_checkオペランドにNを指定したりすることで,ジャーナルファイルを再利用可能にできます。

上記運用で,アンロードまたはジャーナルを捨てることで,ジャーナルファイルの再利用が可能となり,ジャーナル容量を減らせます。

(c) ジャーナル容量見積もりの注意事項

ジャーナル容量を減らす場合,ジャーナルの総容量が小さすぎるとアンロード処理中にジャーナルファイルを使いきり,OpenTP1ダウンとなるおそれがあります。このため次の点に注意してください。

ジャーナルファイルが一周するまでの時間 > ジャーナルアンロード処理時間
(ジャーナルアンロードする時間に対して,ジャーナルファイル出力に追いつかれないようにすることが必要です)

[図データ]

(d) ジャーナルとチェックポイントダンプの関係

チェックポイントダンプを取得すると,その時点より過去のジャーナルファイルについては再利用できます。

チェックポイントダンプは,次の契機で取得されます。

  • システムジャーナルファイルがスワップしたとき。

  • システムジャーナルサービス定義で指定した数のジャーナルブロックをシステムジャーナルファイルに格納したとき。

  • システムサービスの開始・終了時。

  • チェックポイントダンプ取得中にスキップが発生し,その取得が完了したとき。

ただし,チェックポイントダンプは取得してもすぐに有効にはなりません。チェックポイントダンプを取得するタイミングで動作していたトランザクションがすべて完了するまで有効化を待ち合わせています。

次のケースでは,(1)のチェックポイントダンプ取得時点で動作していたTRN1,TRN2,TRN3がすべて完了するまで有効になりません。(5)のタイミングで有効化できるかチェックした時点でTRN1,TRN2,TRN3がすべて完了していることが確認できるため,このタイミングで(1)で取得したチェックポイントダンプが有効となります((1)より後に発生したTRN5は,(1)のタイミングのチェックポイントダンプ対象とはならないで,次のチェックポイントダンプの対象となります)。

[図データ]

チェックポイントダンプの有効化に時間が掛かるようなケースでは,ジャーナルファイルが再利用可能となるまでの時間も遅れることになるため,OpenTP1ダウンとなるおそれがあります。

このような事態を想定し,ジャーナルとチェックポイントダンプの関係は次のようになるよう設計してください。

チェックポイント取得時間 ≪ ジャーナルファイルが一周するまでの時間
 
(チェックポイント取得時間に対して,ジャーナルファイル出力に追いつかれないようにすることが必要です)

チェックポイントの有効化に要した時間は,OpenTP1のシステム統計情報から求められます。「チェックポイント有効化(取得時間)」が上記の(1)から(5)の時間を示しています。この時間を目安にし,さらに十分な余裕を持った時間を見込んでジャーナルファイルの容量を見積もってください。

(e) 運用監視

OpenTP1のシステムダウンを未然防止するため,次のようなシステムメッセージを監視し,マニュアル「OpenTP1 メッセージ」に従った運用対処を行うようシステム設計してください。

(i) 再利用可能なジャーナル不足の監視

再利用可能なジャーナルがなくなると,KFCA01220-Eメッセージを出力し,OpenTP1は緊急停止(システムダウン)します。この状態になる前に,警告として次のメッセージを出力します。

  • KFCA01224-I aaaa(xx....xx)ジャーナルには,次のスワップ要因の発生時に交代先として使用できるファイルグループがありません。

    再利用可能なジャーナルファイルが1つしか残っていない状態です。このまま放置するとOpenTP1ダウンとなる危険性があります。至急ジャーナルファイルを追加するか,再利用可能になっていないファイルに対して対処をしてください。

(ii) チェックポイントダンプ有効化遅れの監視

チェックポイントダンプ取得契機に,長時間有効化できない状態の場合は,警告として次のメッセージを出力します。

  • KFCA02179-I aa....aaサービスのチェックポイントダンプ取得契機をスキップしました。 スキップ回数=bb....bb ジャーナル世代番号cc....cc 要因コード=ddd-ee

    チェックポイント取得契機になりましたが,処理をスキップしています。チェックポイントダンプ取得処理が走行中のため,再利用可能なジャーナルファイルが減少しています。ジャーナルファイルの状態およびトランザクション状態を確認して対処してください。

(iii) 自動アンロード機能停止の監視

自動アンロード機能使用時に障害が発生した場合,警告として次のメッセージを出力して,自動アンロード機能を停止します。

  • KFCA01173-W aaaa(xx....xx)ジャーナルファイルの自動アンロード機能を停止しました。理由コード=bbbb

  • KFCA01174-W aaaa(xx....xx)自動アンロード処理中ですが,処理を中断します。理由コード=bbbb

  • KFCA01178-E aaaa(xx....xx)自動アンロードの処理中に障害が発生しました。理由コード=bbbb

    自動アンロード機能を停止します。障害要因を取り除いたあと,自動アンロード機能を再開始してください。

  • KFCA01179-W aaaa(xx....xx)自動アンロード先ディレクトリを切り替えることができません。切り替え先:bb....bb, 理由コード=cccc

    定義されているディレクトリに自動アンロード先ディレクトリを切り替えます。定義されているすべての自動アンロード先ディレクトリが使用できない場合は,自動アンロード機能を停止します。障害要因を取り除いたあと,自動アンロード機能を再開始してください。