Hitachi

OpenTP1 Version 7 分散トランザクション処理機能 TP1/Financial Service Platform 使用の手引


2.4.6 SDBデータベース定義情報の正副管理

SDBデータベース定義情報を基に,ユーザ公開テーブル(インタフェースエリアテンプレートなど)と制御テーブルを作成します。これらのテーブルを格納する領域は,オン中SDBデータベース定義変更時のメモリ不足を回避するため,TP1/EE起動時に2面確保し,正副制御を行います。

「SDBデータベース定義情報領域(正)」は,現オンラインが使用しているSDBデータベース定義情報用の各種テーブルを格納します。「SDBデータベース定義情報領域(副)」は,事前取得した新しいSDBデータベース定義情報用の各種テーブルを格納します。正副切り替えを実施することで,新しいSDBデータベース定義情報が使用可能になります。

SDBデータベース定義情報領域を操作する契機を次に示します。

表2‒27 SDBデータベース定義情報領域の操作契機一覧

項番

契機

内容

1

TP1/EE起動

SDBデータベース定義情報領域を確保します。また,起動時に取得したSDBデータベース定義情報をSDBデータベース定義情報領域(正)に格納します。この時点では,SDBデータベース定義情報領域(副)は未使用状態です。

2

SDBデータベース定義情報の事前取得

取得したSDBデータベース定義情報をSDBデータベース定義情報領域(副)に格納します。

3

SDBデータベース定義情報の正副切り替え

SDBデータベース定義情報領域の正副を切り替えます。切り替え後,eesdhchgコマンドで「-d」が指定されていればSDBデータベース定義情報領域(副)を未使用状態にします。

表2‒28 SDBデータベース定義情報領域の状態一覧

項番

状態

内容

1

使用中

領域上にSDBデータベース定義情報が格納されています。

2

未使用

領域上にSDBデータベース定義情報が格納されていません。

3

作成中

領域上にSDBデータベース定義情報を格納中です。

〈この項の構成〉

(1) TP1/EE起動時

システムワークメモリから,正副2面分のSDBデータベース定義情報領域を確保します。起動時に取得したSDBデータベース定義情報を基に作成したユーザ公開テーブルおよび制御テーブルは,SDBデータベース定義情報領域(正)に格納します。この時点では,SDBデータベース定義情報領域(副)は未使用状態となります。

SDBデータベース定義情報領域(正)への格納後,領域サイズ,空きサイズなどの情報を,KFSB84301-Iメッセージとして出力します。空きサイズが小さい場合,オン中定義変更が領域不足で失敗するおそれがあります。そのため,SDBデータベース定義情報領域サイズを増やしてTP1/EEの再起動を行うことを推奨します。

図2‒21 TP1/EE起動時のSDBデータベース定義情報領域

[図データ]

(a) SDBデータベース定義情報領域サイズ

SDBデータベース定義情報領域のサイズは,sdh_redef_areaオペランドで指定します。

オン中SDBデータベース定義変更を繰り返す度にSDBデータベース定義情報領域の未使用サイズが減っていき,最終的に領域不足で失敗するおそれがあります。そのため,最終的なSDBデータベース定義変更内容を想定した値をsdh_redef_areaオペランドに指定することを推奨します。

図2‒22 SDBデータベース定義情報領域

[図データ]

(b) SDBデータベース定義情報領域の追加確保

SDBデータベース定義情報が大きく,SDBデータベース定義情報領域に格納できない場合は,不足サイズ分の領域をシステムワークメモリから追加確保し,SDBデータベース定義情報を格納します。システムワークメモリが不足した場合は,malloc()を使用してOSから追加確保します。OSからの確保に失敗した場合は,プロセスが異常終了します。追加確保した領域は,SDBデータベース定義情報の事前取得時に解放します。

図2‒23 SDBデータベース定義情報領域(追加確保あり)

[図データ]

(2) SDBデータベース定義情報の事前取得(eesdhchgコマンドの-bオプション)

最新のSDBデータベース定義情報をHiRDBから取得します。SDBデータベース定義情報を基に作成したユーザ公開テーブルや制御テーブルは,SDBデータベース定義情報領域(副)に格納します。この時点では,最新のSDBデータベース定義を使用したDBアクセスはできません。また,ee_sdh_init()/CBLEESDH('INIT')の提供APIは,古いSDBデータベース定義情報のユーザ公開テーブルを返却します。

事前取得が正常終了した場合は,SDBデータベース定義情報領域(副)の領域サイズ,空きサイズなどの情報を,KFSB84301-Iメッセージとして出力します。

すでにSDBデータベース定義情報領域(副)にSDBデータベース定義情報を格納している状態で,再度SDBデータベース定義情報の事前取得を行うと,新たに取得したSDBデータベース定義情報で上書きします。

図2‒24 事前取得時のSDBデータベース定義情報領域

[図データ]

(a) SDBデータベース定義情報取得の同時実行数

SDBデータベース定義情報の事前取得時,trnstringで指定しているRM数のSBトランザクションを起動し,各RMから同時にSDBデータベース定義情報を取得します。

SBトランザクションの同時実行数は,sdh_redef_maxcntオペランドで指定します。同時実行数が多い場合は,SDBデータベース定義情報の取得に掛かる時間は短いですが,一時的にTP1/EEやHiRDBの負荷が高くなり,かつ,処理スレッドを占有するため,業務遅延などが発生するおそれがあります。同時実行数が少ない場合は,SDBデータベース定義情報の取得に掛かる時間は長いですが,業務への影響は少なくなります。

(b) SDB構成チェック

TP1/EE起動時と同じ構成チェックを行います。

(c) SDBデータベース定義情報領域の追加確保

TP1/EE起動時と同じく,SDBデータベース定義情報領域が不足した場合は追加確保を行います。追加確保に失敗した場合は,事前取得が失敗します。

(d) SDBデータベース定義情報の取得時間

SBトランザクションでは,SDBデータベース定義情報を取得するため,HiRDBに対して最大で「(SDB表数×3)」回SQLを発行します。1回のSQLの応答待ち時間は,HiRDBクライアント環境定義のPDCWAITTIMEオペランド値となります。また,SQL発行個所以外は,トランザクションタイマで60秒の時間監視を行います。したがって,SBトランザクションの実行時間は,最大で「PDCWAITTIME値×「(SDB表数×3)」+60」秒となります。

(e) SDBデータベース定義情報取得のタイムアウト

事前取得の終了待ち時間は,eesdhchgコマンドの-tオプションで指定します。指定時間内に事前取得が終了しなかった場合,コマンドは異常終了しますが,事前取得は継続します。事前取得が終了したかどうかは,eesdhchgコマンドを-lオプション指定で実行することで確認できます。SDBデータベース定義情報領域(副)の状態が「作成中」の場合は事前取得は継続中,「作成中」以外の場合は事前取得は終了しています。

(f) 障害一覧

SDBデータベース定義情報の事前取得時に発生する障害を次の表に示します。

表2‒29 障害一覧

項番

障害内容

1

SDBデータベース定義情報の取得時にSQLエラーが発生

2

全RMから取得したSDB表数の合計が0

3

SDBデータベース定義情報領域の追加確保失敗

4

SDBデータベース定義情報領域(副)が作成中

5

TP1/EE起動時点で有効なSDB表が定義されていたRMが,現在は未起動,または,SDB表が定義されていない

注※

SDBデータベース定義情報領域(副)は未使用状態となります。

(3) SDBデータベース定義情報の正副切り替え(eesdhchgコマンドの-cオプション)

SDBデータベース定義情報領域の正副を切り替え,事前取得したSDBデータベース定義情報を使用可能にします。これ以降,ee_sdh_init()/CBLEESDH('INIT')の提供APIは,新しいSDBデータベース定義情報のユーザ公開テーブルを返却します。

正副切り替えが正常終了した場合は,KFSB84302-Iメッセージを出力します。

図2‒25 正副切り替え時のSDBデータベース定義情報領域

[図データ]

(a) SDBデータベース定義情報の戻し

何らかの障害が発生し,SDBデータベース定義情報領域(副)上の取得日付の古いSDBデータベース定義情報に戻す必要がある場合は,-fオプション指定で正副切り替えを行ってください。-fオプションを省略した場合は,運用ミスと判断してコマンドはエラーとなります。

(b) 正副切り替え後のSDBデータベース定義情報領域(副)削除

-dオプション指定で正副切り替えを行うと,正副切り替えの正常終了後,SDBデータベース定義情報領域(副)上のSDBデータベース定義情報をクリアして未使用状態にします。SDBデータベース定義情報の戻しを行う場合は,-dオプションを指定しないでください。

(c) 障害一覧

SDBデータベース定義情報の正副切り替え時に発生する障害を次の表に示します。

表2‒30 障害一覧

項番

障害内容

1

トランザクション静止化中でない

2

他ノード実行時にSDBデータベース定義情報領域(副)が未使用,かつ,-zオプション未指定

3

SDBデータベース定義情報領域(副)が作成中

4

SDBデータベース定義情報領域(副)の取得日時が,SDBデータベース定義情報領域(正)の取得日時より古い,かつ,-fオプションおよび-zオプション未指定

(4) SDBデータベース定義情報の表示(eesdhchgコマンドの-lオプション)

SDBデータベース定義情報領域(正)およびSDBデータベース定義情報領域(副)の各種情報を出力します。この出力内容を基に,使用しているSDBデータベース定義情報が妥当かどうか,次回のオン中SDBデータベース定義変更時に領域不足が発生しないかなどを判断できます。