24.6.1 監査証跡ファイルの作成
(1) 監査証跡ファイルの作成規則
監査証跡ファイル用のHiRDBファイルシステム領域内にHiRDBが自動的に監査証跡ファイルを作成します。最初に作成した監査証跡ファイルを1世代目として,順に2世代目,3世代目,…というように作成します。監査証跡ファイルの作成規則を次の図に示します。
HiRDBファイルシステム領域内に作成される監査証跡ファイル数の上限はpd_aud_max_generation_numオペランドの値になります。ただし,pdfmkfsコマンドの-lオプションの値がpd_aud_max_generation_numオペランドの値より小さい場合は,-lオプションの値が上限になります。また,HiRDBファイルシステム領域の領域不足が発生した場合は,pd_aud_max_generation_numオペランドの値まで監査証跡ファイルを作成できません。
(2) 監査証跡ファイルの名称
監査証跡ファイルの名称は次に示す規則で決まります。
pdaudユニット識別子001〜200.aud
- (例)ユニット識別子がUNT1で,pd_aud_max_generation_num=100の場合
-
1世代目のファイル名:pdaudUNT1001.aud
2世代目のファイル名:pdaudUNT1002.aud
: :
99世代目のファイル名:pdaudUNT1099.aud
100世代目のファイル名:pdaudUNT1100.aud
監査証跡ファイル用のHiRDBファイルシステム領域内に監査証跡ファイル以外のファイルを作成する場合は,上記の名称規則に該当するファイルを作成しないでください。
(3) 監査証跡ファイルへの出力(同期出力)
監査証跡の出力方式はpd_aud_async_buff_sizeオペランドの指定値によって同期出力又は非同期出力に分かれます。ここでは,同期出力の場合について説明します。
監査証跡ファイルが一つもない場合は,最初の監査証跡の取得契機時に監査証跡ファイルを作成して監査証跡を出力します。監査証跡ファイルが一つ以上ある場合は,監査証跡の取得契機ごとに監査証跡を現用ファイルに出力します。
(4) 監査証跡ファイルへの出力(非同期出力)
監査証跡の出力方式はpd_aud_async_buff_sizeオペランドの指定値によって同期出力又は非同期出力に分かれます。ここでは,非同期出力の場合について説明します。
(a) 非同期出力の仕組み
監査証跡を非同期出力する場合の仕組みを説明します。
監査証跡の出力契機が発生すると,監査証跡を非同期出力用バッファに格納し,非同期出力用バッファが満杯になると,監査証跡ファイルへ出力します。このため,非同期出力では,HiRDBのシステム構築時に,非同期出力用バッファを用意しておく必要があります。
なお,非同期出力用バッファは,共用メモリ上に確保します。非同期出力の仕組みを次の図に示します。
- [説明]
-
-
1面目の非同期出力用バッファが満杯になると,監査証跡を監査証跡ファイルに出力し,格納先を2面目の非同期出力用バッファに切り替えます。
-
以降の監査証跡は,2面目の非同期出力用バッファに格納します。2面目の非同期出力用バッファが満杯になった場合は,1.,2.を繰り返します。
-
- 注意事項
-
非同期出力用バッファの監査証跡を監査証跡ファイルに出力している間は,順序性を維持するため,別の非同期出力用バッファの監査証跡を監査証跡ファイルに出力できません。このため,監査証跡ファイルへの出力に時間を要する場合,複数面の非同期出力用バッファが満杯になることがあります。
その影響で,システムで稼働させるトランザクション,及びユティリティの実行間隔や同時実行本数によっては,非同期出力用バッファが不足することがあります。これを非同期出力用バッファの枯渇といいます。
非同期出力用バッファの枯渇は,HiRDBの性能劣化の原因になります。
図の例では,非同期出力用バッファは7面分設定されています。もし,1面目の非同期出力用バッファの内容を監査証跡ファイルに出力している間に,7面すべての非同期出力用バッファが満杯になると,新しく発生した監査証跡の格納ができません。このとき,トランザクション又はユティリティは,非同期出力用バッファに空きができるまで,監査証跡の格納を待ち合わせるため,性能が劣化します。
HiRDBの性能劣化を防ぐため,監査証跡の出力状況を考慮して,非同期出力用バッファの大きさを見直すことをお勧めします。
(b) 非同期出力用バッファの大きさを見直す手順
HiRDBの性能劣化を防ぐため,次の図に示す手順で,非同期出力用バッファの大きさを見直してください。
- 1. 非同期出力用バッファの最大消費量の見積もり
-
まず,非同期出力用バッファの最大消費量を見積もります。
非同期出力用バッファの最大消費量とは,非同期出力用バッファ1面分の監査証跡を監査証跡ファイルに出力している間に格納された監査証跡によって使用される,非同期出力用バッファの最大値です。監査証跡ファイルの世代スワップ中に出力される監査証跡の件数から求められます。
非同期出力用バッファの最大消費量を算出する式を次に示します。
非同期出力用バッファの最大消費量(単位:バイト)= (監査証跡ファイルの世代スワップに掛かる時間…(i) ×1秒間に格納する監査証跡記録件数の最大値…(ii) ×監査証跡1件当たりのレコードサイズ…(iii)) +非同期出力用バッファ1面のサイズ…(iv)
- (i)監査証跡ファイルの世代スワップに掛かる時間
-
監査証跡ファイルの世代スワップに掛かる時間は,HiRDBがメッセージを出力した時刻から導きます。
次の二つのメッセージが出力された時刻の差分が,監査証跡ファイルの世代スワップに掛かった時間です。
-
KFPS05703-Iメッセージ(監査証跡ファイルの世代を解放したことを示す)
-
KFPS05702-Iメッセージ(監査証跡ファイルの世代を割り当てたことを示す)
なお,差分が0秒の場合は1秒とみなして計算してください。
-
- (ii)1秒間に格納する監査証跡記録件数の最大値
-
1秒間に格納する監査証跡記録件数の最大値は,発行するSQLとアクセスする表数から求めます。
概算値は,次の計算式で求めます。
1秒間に格納する監査証跡記録件数の最大値=1秒間に発行するSQL件数の最大数×3×アクセスする表数
監査証跡記録件数を正確に求める場合は,「監査証跡のレコード項目(権限チェック時)」及び「監査証跡のレコード項目(イベント終了時)」を参照してください。
- (iii)監査証跡1件当たりのレコードサイズ
-
マニュアル「HiRDB システム導入・設計ガイド」の「監査証跡ファイルの容量の見積もり」の「監査証跡のレコードサイズ」を参照して見積もってください。
- (iv)非同期出力用バッファ1面のサイズ
-
pd_aud_async_buff_sizeオペランドの指定値を使います。デフォルト値は401408です。
- 2. 非同期出力用バッファの総容量の見積もり
-
非同期出力用バッファの総容量は,次の計算式で求めます。
非同期出力用バッファの総容量= pd_aud_async_buff_sizeオペランドの指定値×pd_aud_async_buff_countオペランドの指定値
非同期出力用バッファの総容量が,非同期出力用バッファの最大消費量の2倍に満たない場合,非同期出力用バッファの最大消費量の2倍にすることを推奨します。推奨する理由は次のとおりです。
監査証跡ファイルへの出力に時間が掛かった場合,複数面の非同期出力用バッファが満杯になることがあります。その際,トランザクション量の急な増加が発生すると,非同期出力用バッファが枯渇するおそれがあります。そうした場合にも枯渇が発生しないよう,非同期出力用バッファの最大消費量の2倍の値にすることを推奨します。
- 3. 非同期出力用バッファの1面のサイズと必要面数の見積もり
-
次の表に従って,システム定義のpd_aud_async_buff_sizeオペランドとpd_aud_async_buff_countオペランドの値を見積もります。
1面当たりのサイズと必要面数の推奨値を次の表に示します。
表24‒16 非同期出力用バッファ1面当たりのサイズと必要面数の推奨値 判定条件
非同期出力用バッファ
1面当たりのサイズ
(pd_aud_async_buff_size
オペランドの指定値)
必要面数
(pd_aud_async_buff_count
オペランドの指定値)
推奨値(非同期出力用バッファの最大消費量×2)≦非同期出力用バッファの総容量
変更は不要です。
変更は不要です。
推奨値(非同期出力用バッファの最大消費量×2)>非同期出力用バッファの総容量
最大値の6553600に変更します。
次の計算式で算出した値に変更します。
max(現在のpd_aud_async_buff_countオペランドの指定値,↑非同期出力用バッファの最大消費量×2÷6553600↑)
- 注意事項
-
非同期出力用バッファの総容量を見直しても,監査証跡ファイルの世代スワップが連続して発生した場合は,非同期出力用バッファから監査証跡ファイルへの出力が進まなくなり,非同期出力用バッファの枯渇につながるおそれがあります。
非同期出力用バッファの枯渇によるHiRDBの性能劣化を防ぐには,非同期出力用バッファの大きさだけではなく,監査証跡ファイル1世代の最大容量(pd_aud_max_generation_sizeオペランド)の値が,次の大小関係を満たすように見直すことをお勧めします。
(非同期出力用バッファの最大消費量×2÷1024÷1024)< pd_aud_max_generation_sizeオペランドの指定値
(単位:メガバイト)
(c) 非同期出力用バッファフラッシュ契機
非同期出力を選択した場合は監査証跡の出力契機が発生すると,監査証跡を一時的に非同期出力用のバッファに格納します。非同期出力用のバッファに格納した監査証跡は次に示す契機に監査証跡ファイルに出力されます。これを非同期出力用バッファフラッシュ契機といいます。
-
非同期出力用バッファが満杯になった場合
-
pdaudswapコマンドを実行した場合
-
pdaudendコマンドを実行した場合
-
pdstopコマンドでHiRDB(ユニット)を正常終了又は計画停止した場合
なお,非同期出力用バッファフラッシュ契機が頻繁に発生すると,非同期出力用バッファのすべての面がフラッシュ待ちとなることがあります。このときの対処方法については,「非同期出力用バッファのすべての面がフラッシュ待ちになった場合」を参照してください。
すべての面がフラッシュ待ちになってから180秒経過すると,HiRDBはpd_aud_no_standby_file_oprオペランドの指定値に従って処理を行います。
- forcewrite(省略値)を指定した場合
-
最初にフラッシュ待ちになった非同期出力用バッファの監査証跡を上書きして,監査証跡の出力を続行します。上書きされた非同期出力用バッファの監査証跡は破棄されます。
- downを指定した場合
-
KFPS05722-Eメッセージを出力し,HiRDB(HiRDB/パラレルサーバの場合はユニット)を強制終了します。非同期出力用バッファにあった監査証跡,及び非同期出力用バッファに出力しようとしていた監査証跡はともに破棄されます。