DAMサービス定義
形式
set形式
〔set dam_update_block=更新する最大ブロック数〕
〔set dam_added_file=オンライン中に追加する最大論理ファイル数〕
〔set dam_update_block_over=flush|error〕
〔set dam_message_level=1|0〕
〔set dam_tran_process_count=同時に実行するトランザクション
ブランチの数〕
〔set dam_cache_size|dam_cache_size_fix=バッファ領域長〕
〔set dam_cache_attribute=free|fixed〕
〔set dam_io_interval=実行間隔時間〕
〔set dam_transaction_access=global|branch〕
〔set dam_io_error_occur=stop|continue〕
〔set dam_cache_reuse_from=last|first〕
〔set dam_default_cache_num=キャッシュブロック再利用境界デフォルト値〕
〔set dam_ex_refer_read=none|stay〕
〔set dam_max_block_size=最大ブロック長〕
〔set dam_kb_size=1000|1024〕
〔set watch_time=最大応答待ち時間〕
コマンド形式
〔damcache 論理ファイル名 キャッシュブロック再利用境界値〕
〔damchlmt 論理ファイル名 キャッシュブロック数のしきい値〕
{{damfile〔-{d|n〔-f〕}〕〔-c〕論理ファイル名 物理ファイル名}}
機能
ファイル回復機能付き直接アクセスファイルを管理するための実行環境を定義します。
説明
set形式のオペランド
●dam_update_block=更新する最大ブロック数
~〈符号なし整数〉((1~32768))《8》
更新するブロックの最大値を指定します。DAMサービスは,この指定値によってシステムサービス用共用メモリプール(動的共用メモリ)上にDAMサービス分のメモリを確保します。そのため,算出式で求めた値よりも大きな値を指定した場合は,システムサービス用共用メモリプール(動的共用メモリ)を圧迫することがあります。
このオペランドに指定する値の算出方法を次に示します。
表3-7 トランザクションの開始から完了まで更新目的で入出力する場合の算出方法
アクセス関数の実行順序 | アクセスブロック数 | A | B | C | 算出値(A+B+C) |
---|---|---|---|---|---|
トランザクション開始 | - | 0 | 0 | 0 | 0 |
dc_dam_read関数(更新目的) | 2 | 2 | 0 | 0 | 2 |
dc_dam_rewrite関数 | 2 | 0 | 0 | 0 | 0 |
dc_dam_write関数 | 3 | 0 | 3 | 0 | 5 |
トランザクション完了 | - | 0 | 0 | 0 | 0 |
最終値 | 2 | 3 | 0 | 5 |
表3-8 dc_dam_write関数だけ実行する場合の算出方法
アクセス関数の実行順序 | アクセスブロック数 | D | E | F | G | 算出値(E+F-G) |
---|---|---|---|---|---|---|
dc_dam_start関数 | - | 0 | 0 | 0 | 0 | 0 |
dc_dam_write関数 | 3 | 3 | 0 | 0 | 0 | 0 |
dc_dam_write関数 | 5 | 5 | 0 | 0 | 0 | 0 |
dc_dam_end関数 | - | 0 | 0 | 0 | 0 | 0 |
最終値 | 5 | 0 | 0 | 0 | 0 |
表3-9 dc_dam_read関数(更新目的)とdc_dam_write関数を実行した場合の算出方法
アクセス関数の実行順序 | アクセスブロック数 | D | E | F | G | 算出値(E+F-G) |
---|---|---|---|---|---|---|
dc_dam_start関数 | - | 0 | 0 | 0 | 0 | 0 |
dc_dam_read関数(更新目的) | 3 | 3 | 3 | 0 | 0 | 3 |
dc_dam_write関数 | 5 | 5 | 0 | 5 | 0 | 8 |
dc_dam_end関数 | - | 0 | 0 | 0 | 0 | 0 |
最終値 | 5 | 3 | 5 | 0 | 8 |
表3-10 dc_dam_read関数(更新目的)実行前にdc_dam_write関数を実行した場合の算出方法
アクセス関数の実行順序 | アクセスブロック数 | D | E | F | G | 算出値(E+F-G) |
---|---|---|---|---|---|---|
dc_dam_start関数 | - | 0 | 0 | 0 | 0 | 0 |
dc_dam_write関数 | 8 | 8 | 0 | 0 | 0 | 0 |
dc_dam_read関数(更新目的) | 4 | 0 | 4 | 0 | 0 | 3 |
dc_dam_write関数 | 5 | 0 | 0 | 5 | 0 | 9 |
dc_dam_end関数 | - | 0 | 0 | 0 | 0 | 0 |
最終値 | 8 | 4 | 5 | 0 | 9 |
表3-11 dc_dam_read関数(更新目的)実行後,一部のブロックに対してdc_dam_rewrite関数を実行した場合の算出方法
アクセス関数の実行順序 | アクセス ブロック数 | D | E | F | G | 算出値(E+F-G) |
---|---|---|---|---|---|---|
dc_dam_start関数 | - | 0 | 0 | 0 | 0 | 0 |
dc_dam_read関数(更新目的) | 4 | 4 | 4 | 0 | 0 | 4 |
dc_dam_rewrite関数 | 3 | 0 | 0 | 0 | 3 | 1 |
dc_dam_write関数 | 5 | 5 | 0 | 5 | 0 | 6 |
dc_dam_end関数 | - | 0 | 0 | 0 | 0 | 0 |
最終値 | 5 | 4 | 5 | 3 | 6 |
●dam_added_file=オンライン中に追加する最大論理ファイル数
~〈符号なし整数〉((1~128))《8》
オンライン中に追加する論理ファイルの最大値を指定します。
オンライン実行中には,指定した数まで論理ファイルを追加できます。
●dam_update_block_over=flush|error
~《error》
トランザクションの途中で更新するブロック数が,dam_update_blockオペランドで指定した最大ブロック数を超える場合に,アクセス関数をエラーリターンするかどうかを指定します。
●dam_message_level=1|0
~《1》
DAMサービスが出力するメッセージのレベルを指定します。
●dam_tran_process_count=同時に実行するトランザクションブランチの数
~〈符号なし整数〉((0~8192))
DAMファイルにアクセスするトランザクションブランチを同時に実行する数を指定します。ここで指定した数に合わせて領域が確保されます。
0を指定した場合や領域が足りなくなった場合は,トランザクションを実行するときに領域を確保するため,処理が遅くなります。
なお,この指定値を大きくすると,共用メモリを圧迫します。使用できるメモリの容量を考えて指定してください。
●dam_cache_size|dam_cache_size_fix=バッファ領域長
~〈符号なし整数〉((10~1000000))(単位:キロバイト)
システム起動時にオンラインで参照・更新したブロックをスタックしておくためのバッファ領域の大きさを,dam_cache_sizeオペランドまたはdam_cache_size_fixオペランドに指定します。dam_cache_size_fixオペランドの指定は,dam_cache_sizeオペランドの指定より優先されます。
dam_cache_sizeを指定する場合は,次の「バッファ領域長の仮定値計算式」で示す値より大きい値を指定します。
dam_cache_sizeオペランドを省略した場合や,DAMサービスが「バッファ領域長の仮定値計算式」を基に自動的に算出した値より小さい値を指定した場合は,DAMサービスが算出した値でバッファ領域を確保します。
「バッファ領域長の仮定値計算式」で求める値は,DAMサービス定義に指定した各オペランドを基に,最も大きいバッファ領域サイズを算出します。したがって,「バッファ領域長の仮定値計算式」で算出した値ではバッファを確保できない場合があります。その場合,DAMサービス内部でバッファ領域が確保できるまで,確保する値を1/2にしながら確保処理を実行します。
dam_cache_sizeオペランドおよびdam_cache_size_fixオペランドの指定値が指定範囲内でない場合には,ともにKFCA01644-Iメッセージが出力されます。
容量不足のためdam_cache_sizeオペランドおよびdam_cache_size_fixオペランドの指定値でバッファ領域を確保できない場合には,ともにKFCA01648-Eメッセージが出力されDAMサービスやUAPがダウンします。
なお,ディファード更新処理指定のDAMファイルを指定している場合は,仮定値計算式で算出したバッファ領域長の値に加えて次の見積もり式に示す容量が必要です。
次に,dam_cache_sizeオペランドとdam_cache_size_fixオペランドの違いについて説明します。
dam_cache_sizeオペランドおよびdam_cache_size_fixオペランドの相互指定関係での採用値について次の表に示します。
dam_cache_size_fixの指定 | dam_cache_sizeの指定 | ||
---|---|---|---|
指定が正しい場合 | 指定を省略した場合 | 指定を誤った場合(KFCA01644-I出力) | |
指定が正しい場合 | (2) | (2) | (2) |
指定を省略した場合 | (1) | (3) | (3) |
指定を誤った場合(KFCA01644-I出力) | (1) | (3) | (3) |
バッファ領域不足が発生し処理が続行できなくなった場合,アボートコードが出力されるので,アボートコードに対する対策方法に従ってください。アボートコードについては,マニュアル「OpenTP1 メッセージ」を参照してください。
なお,DAMファイルの構成を変更するなど,システムの定義および環境を変更する場合にも,再度指定値を見直してください。
リソースマネジャ用共用メモリの所要量は,dam_cache_size_fixオペランドで指定したキャッシュサイズになります。
●dam_cache_attribute=free|fixed
~《free》
共用メモリに確保したバッファ領域をメモリ上に固定するかどうかを指定します。このオペランドを指定する場合は,実装するメモリの容量や,全使用量に対するバッファ領域の割合などを考慮してください。この指定値は,ディファード更新機能に関係なく指定してください。
●dam_io_interval=実行間隔時間
~〈符号なし整数〉((1~60))《1》(単位:秒)
ディファード更新機能を使用するとき,出力専用プロセスを実行する間隔を指定します。この指定値は,ディファード更新機能を使用しないときは,指定する必要はありません。
出力専用プロセスの実行間隔を大きくし過ぎるとバッファ領域不足が発生し,ほかのトランザクションで更新または出力しようとしたブロックの書き込みができなくなって,メモリ不足でUAPがダウンすることがあります。この値は動作するトランザクションがピークに達した場合を想定したときの実行間隔時間内に終了するトランザクションの数と各トランザクションで更新,および出力するブロック数(バッファ所要量)で決めてください。
●dam_transaction_access=global|branch
~《branch》
DAMファイルのデータ管理および排他管理をするトランザクションの単位を指定します。
●dam_io_error_occur=stop|continue
~《continue》
ディスク更新時にディスク障害(入出力エラー)が発生した場合のDAMサービスの処置を指定します。
DAMサービスでは,トランザクションの同期点処理時にディスク更新をします。または,トランザクションの途中更新機能を使用している場合のDAMサービスアクセス関数の延長で,ディスク更新をします。ここでは,ディスク更新時に障害が発生した場合のDAMサービスの処置を指定します。
ディファード更新時および回復対象外ファイル更新時の,ディスク障害が発生した場合の処置については,指定値による違いはありません。ディファード更新時にディスク障害が発生した場合は,KFCA01646-E,KFCA01642-Iのメッセージを出力して障害ファイル以外のファイルについて処理を続行します。回復対象外ファイル更新時にディスク障害が発生した場合は,KFCA01646-E,KFCA01642-Iのメッセージを出力してdc_dam_rewrite関数,dc_dam_write関数がDCDAMER_IOERをリターンします。
●dam_cache_reuse_from=last|first
~《last》
DAMファイルをアクセスするトランザクションで,新たにキャッシュブロック用領域が必要となった場合,どのブロックから優先的に再利用対象として検索するかを指定します。なお,DAMサービスではブロックを新しく更新し,参照用キャッシュチェインにつなぐ場合,参照用キャッシュチェインの先頭につないでいます。
lastを指定した場合でも,キャッシュブロックの検索のタイミングでトランザクションによってアクセスされているキャッシュブロックは,再利用対象外として扱われます。したがって,その次に古いキャッシュブロックが再利用対象として検索されます。また,最も古くからキャッシュチェインに残っているかどうかを判断していて,LRU方式のように最近アクセスされたもののチェインの並べ替えはしていません。あくまで,アクセスされ,キャッシュチェインにつながれた時期が古いものから検索されます。
●dam_default_cache_num=キャッシュブロック再利用境界デフォルト値
~〈符号なし整数〉((0~4000000))《0》
キャッシュブロック再利用処理の境界値のデフォルト値を指定します。このオペランドに指定した値が,damcache定義コマンドでキャッシュブロック再利用境界値を指定しなかった場合の論理ファイルの境界値となります。
●dam_ex_refer_read=none|stay
~《none》
DAMファイルをアクセスするトランザクションで,排他あり参照指定で読み込むブロックを,トランザクション決着までキャッシュバッファ領域上に残すかどうかを指定します。
このオペランドを使用する場合,次のことに注意してください。
●dam_max_block_size=最大ブロック長
~〈符号なし整数〉((504~32760))※《504》(単位:バイト)
システム内のDAMファイルの最大ブロック長を指定します。ただし,条件によって,指定値と異なる値が最大ブロック長に採用されることがあります。条件と採用される最大ブロック長の関係を次の表に示します。
dam_max_block_sizeオペランド | damfile定義コマンド | |
---|---|---|
指定あり | 指定なし | |
指定が正しい場合 | aまたはbのうち,大きい値を採用 | aの値を採用 |
指定を省略した場合 | bの値を採用 | 504を仮定 |
指定を誤った場合 (504~32760の範囲外) | bの値を採用※1 | 504を仮定※1 |
指定を誤った場合 (セクタ長×n-8以外(nは正の整数)) | bの値を採用※2 | 504を仮定※2 |
●dam_kb_size=1000|1024
~《1000》
DAMサービス用共用メモリとして確保されるバッファ領域のサイズをDAMサービス定義($DCDIR/conf/dam)のdam_cache_sizeオペランド(単位:キロバイト)に指定した場合,自動的にバイト換算されます。そのときに,1キロバイト当たり1000バイトで換算するか,1024バイトで換算するかを指定します。
●watch_time=最大応答待ち時間
~〈符号なし整数〉((0~65535))(単位:秒)
RPCによってプロセス間で通信する場合,サービス要求を送信してからサービスの応答が返るまでの待ち時間の最大値を指定します。
OpenTP1の終了処理で,このオペランドで指定した時間だけ終了処理を待ち合わせる場合があります。したがって,大きな値を指定した場合,OpenTP1の終了処理に時間が掛かる場合があります。
指定時間を過ぎても応答がない場合は,RPCは送受信タイムアウトとしてエラーリターンします。
0を指定した場合は,応答を受信するまで待ち続けます。0を指定した場合,OpenTP1が終了しない場合があります。
省略した場合は,システム共通定義のwatch_timeオペランドの値を仮定します。
このオペランドは,システム共通定義のwatch_timeオペランドのデフォルト値で使用してください。
特別なチューニングを必要とする場合以外は,このオペランドの内容を変更しないことをお勧めします。
システム共通定義のwatch_timeオペランドのデフォルト値よりも,極端に小さな値または大きな値を指定すると,OpenTP1ダウンに至る障害が発生する場合がありますので,ご注意ください。
コマンド形式
次ページ以降に記述しています。