Hitachi

ノンストップデータベース HiRDB Version 9 構造型データベース機能


7.8.2 監査証跡表の列に格納される情報についての留意事項(SDBデータベース操作イベントの場合)

〈この項の構成〉

(1) ACCESS_COUNT列

監査証跡表のACCESS_COUNT列には,SDBデータベース操作イベントが成功したときに,オブジェクト(レコード)を検索,格納,更新,または削除したレコード数が,次の表に示すとおりに設定されます。イベントの失敗時にはNULL値が格納されます。

表7‒12 SDBデータベース操作イベントのアクセス件数

項番

データベース操作種別

1回の操作で記録するアクセス件数

単一要求

複数要求

1

SDBデータベース操作

  • レコードの検索(FETCH)

  • 位置指示子の位置づけ(FIND)

1(ただし,NOT FOUNDの場合は0)

n

Σ(要求ごとの左記件数)

i=1

2

レコードの格納(STORE)

1

3

レコードの更新(MODIFY)

4

レコードの削除(ERASE)

次のどちらかとなります。

  • 削除レコードとそのレコード削除に伴って削除された配下の子レコードの合計数

  • 一括オプション('O')指定で削除したレコード数

ただし,INTEGER型の上限値より大きくなった場合は,INTEGER型の上限値(2,147,483,647)となります。

n

Σ(要求ごとの左記件数)

i=1

ただし,INTEGER型の上限値より大きくなった場合は,INTEGER型の上限値(2,147,483,647)となります。

5

レコードの一括削除

1回の要求で削除したレコード数

複数要求はありません。

6

複数レコードの検索(FETCHDB ALL)

1回の要求で検索したレコード数

注※

4V AFMまたはSD FMBのSDBデータベースに対する操作の場合,複数要求はありません。

(2) SQL_SOURCE列

監査証跡表のSQL_SOURCE列には,SDBデータベースのレコード操作入力情報が格納されます。記録するレコード操作入力情報の長さを,システム共通定義のpd_aud_sql_source_sizeオペランドで指定する必要があります。pd_aud_sql_source_sizeを指定しないか,または0を指定した場合,SQL_SOURCE列にはNULL値が記録されます。また,記録するレコード操作入力情報の長さが,pd_aud_sql_source_sizeオペランドの指定値よりも長い場合は,レコード操作入力情報の先頭から指定値までの内容が記録され,残りは切り捨てられます。このため,pd_aud_sql_source_sizeオペランドには,レコード操作入力情報に必要なサイズ以上の値を指定することを推奨します。

レコード操作入力情報に設定する情報を次の表に示します。

表7‒13 レコード操作入力情報に設定する情報(ユーザ指定値)

項番

設定情報

サイズ(バイト)

属性

要求

レコードの検索(FETCH)

レコードの格納(STORE)

レコードの更新(MODIFY)

レコードの削除(ERASE)

レコードの一括削除

複数レコードの検索(FETCHDB ALL)

1

要求エントリ番号

2

short

2

アクセスモード

1

char

3

指示コード

1

char

4

検索コード

1

char

5

ポインタオプション

1

char

6

データ格納形式オプション

1

char

7

予備

5

char

8

一連番号

4

char

9

アクセス条件

可変

char

(凡例)

〇:ユーザ指定値のデータを設定

−:設定なし(0x00)

注※

位置指示子の位置づけ(FIND)も含まれます。

(a) 設定情報の内容

  • 要求エントリ番号(1〜n)

    1回のアクセスのレコード操作の順番です。要求をブロック化した複数要求の場合は,要求ごとのレコード操作の順番に1〜nとなります。

  • アクセスモード

    <各要求共通>

    'R':参照

    'U':更新

  • 指示コード

    <FETCHまたはFINDの場合>

    'F':FIRSTポインタ

    'L':LASTポインタ

    'U':USERポインタ

    'N':NEXTポインタ

    'P':PRIORポインタ

    'R':ROWIDポインタ

    <ERASEの場合>

    'O':最下位レベルのレコード型について全レコード削除

    'S':削除目的のレコードとその下位レベルのレコード削除

    <FETCHDB ALLの場合>

    'F':検索範囲の最小キーのルートレコードから検索を開始

    'N':前回検索したレコードの次のレコードから検索を開始

    'S':前回の検索したファミリの検索状態に関係なく,次のルートレコードから検索を開始

  • 検索コード

    <FETCHまたはFINDの場合>

    'N':USERポインタからNEXT方向

    'P':USERポインタからPRIOR方向

    X'00':指定なし

  • ポインタオプション

    <STOREの場合>

    'U':USERポインタにする

    'N':USERポインタにしない

    X'00':USERポインタにしない

    <MODIFYの場合>

    'U':USERポインタにする

    'C':USERポインタを解除

    'N':USERポインタにしない

    X'00':USERポインタにしない

  • データ格納形式オプション

    <FETCHまたはFINDの場合>

    'D':ユーザキー以外のキーの構成要素を除いて,データ格納エリアに格納

    'E':構成要素指定エリアで指定した構成要素だけをデータ格納

    'K':キーの構成要素を除かないでデータ格納エリアに格納

    'N':データ格納エリアへの格納をしない

    <MODIFYの場合>

    'D':ユーザキー以外のキーの構成要素を除いて,データ格納エリアに格納

    'E':レコードの更新のためのレコードの検索で指定した構成要素だけをデータ格納

    'N':USERポインタの変更だけのため,データ格納エリアに格納していない

  • 一連番号

    検索要求で指定した一連番号です。

  • アクセス条件

    次の図に示すフォーマットで格納します。各ブロックは,アクセス要求時のインタフェースエリアの内容をユーザが指定したサイズで設定します。そのため,ユーザが指定したサイズが,次の図に示す有効な条件や,値ブロックよりも大きなサイズで指定されている場合,各ブロックには有効な形式以外にも,ユーザが指定したエリアの内容がそのまま設定されます。

    図7‒11 アクセス条件の形式

    [図データ]

■キーの条件の条件ブロック形式

キーの条件の条件ブロック形式を次の図に示します。

図7‒12 キーの条件の条件ブロックの形式

[図データ]

キーの条件の条件ブロック情報を次の表に示します。

表7‒14 キーの条件の条件ブロック情報

相対位置

(バイト)

長さ

(バイト)

属性

内容

備考

0+11×(N−1)

8

char

構成要素名称

  • 'DBKEY△△△'

なし

8+11×(N−1)

2

char

比較記号

  • 'GT'または'>△':大きい

  • 'GE'または'>=':大きいか等しい

  • 'LT'または'<△':小さい

  • 'LE'または'<=':小さいか等しい

  • 'EQ'または'△=':等しい

なし

10+11×(N−1)

1

char

論理式

  • '*'または'&':論理積

接続記号

  • '-'または'_'

次に条件式がある場合は論理式を指定し,最後の条件式では接続記号となります。

(凡例)

N:先頭からの条件式数

△:半角スペース

■キー以外の条件の条件ブロック形式

キー以外の条件の条件ブロックの形式を次の図に示します。

図7‒13 キー以外の条件の条件ブロックの形式

[図データ]

キー以外の条件の条件ブロック情報を次の表に示します。

表7‒15 キー以外の条件の条件ブロック情報

相対位置

(バイト)

長さ

(バイト)

属性

内容

備考

0+11×(N−1)

8

char

構成要素名称

なし

8+11×(N−1)

2

char

比較記号

  • 'GT'または'>△':大きい

  • 'GE'または'>=':大きいか等しい

  • 'LT'または'<△':小さい

  • 'LE'または'<=':小さいか等しい

  • 'EQ'または'△=':等しい

  • 'NE'または'^=':等しくない

なし

10+11×(N−1)

1

char

論理式

  • '*'または'&':論理積

  • '+'または'|':論理和

接続記号

  • '-'または'_'

次に条件式がある場合は論理式を指定し,最後の条件式では接続記号となります。

(凡例)

N:先頭からの条件式数

△:半角スペース

■キーの条件の値ブロック形式

キーの条件の値ブロックの形式を次の図にしまします。

図7‒14 キーの条件の値ブロックの形式

[図データ]

キーの条件の値ブロック情報を次の表に示します。

表7‒16 キーの条件の値ブロック情報

相対位置

(バイト)

長さ

(バイト)

属性

内容

1つ前の構成要素までのサイズの合計

構成要素のサイズ

キーの条件を構成する各構成要素のデータ型の属性

キーの条件式の条件ブロックで指定した構成要素の値

■キー以外の条件の値ブロック形式

キー以外の条件の値ブロック形式を次の図に示します。

図7‒15 キー以外の条件の値ブロック形式

[図データ]

キー以外の条件の値ブロック情報を次の表に示します。

表7‒17 キー以外の条件の値ブロック情報

相対位置

(バイト)

長さ

(バイト)

属性

内容

1つ前の構成要素までのサイズの合計

構成要素のサイズ

キー以外の条件を構成する各構成要素のデータ型の属性

キー以外の条件式の条件ブロックで指定した構成要素の値

(3) SQL_DATA列

監査証跡表のSQL_DATA列には,SDBデータベースのレコード操作出力情報が格納されます。記録するレコード操作出力情報の長さを,システム共通定義のpd_aud_sql_data_sizeオペランドで指定する必要があります。pd_aud_sql_data_sizeオペランドを省略するか,または0を指定した場合はNULL値が記録されます。また,記録するレコード操作出力情報の長さが,pd_aud_sql_data_sizeオペランドの指定値よりも長い場合は,レコード操作出力情報の先頭から指定値までの内容が記録され,残りは切り捨てられます。このため,pd_aud_sql_data_sizeオペランドには,レコード操作出力情報に必要なサイズ以上の値を指定することを推奨します。

レコード操作出力情報の形式を次の図に示します。

図7‒16 レコード操作出力情報の形式

[図データ]

注※

レコード操作キー情報の形式および長さについては,「(a) レコード操作キー情報」を参照してください。

レコード操作出力情報を次の表に示します。

表7‒18 レコード操作出力情報

相対位置

(バイト)

長さ

(バイト)

属性

内容

備考

0

1

char

<ヘッダ部>

SDBデータベース種別

次の値を設定します。

  • 4V FMBまたはSD FMBの場合:'F'

  • 4V DAMの場合:'D'

  • 4V MAMの場合:'M'

  • 4V TAMの場合:'T'

  • 4V SAMの場合:'S'

なし

1

7

char

<ヘッダ部>

予備(0x00)

なし

8

2

short

<情報管理部>

情報数(n)

なし

10

1×n

char

<情報管理部>

情報領域の存在を示すインジケータ(IND)を出力情報数分作成します。

インジケータ(IND)は,情報1〜nにそれぞれ対応していて,各情報領域の存在を管理し,次の値を設定します。

  • 情報領域あり:0x00

  • 情報領域なし:0xFF

なし

10+(1×n)

4

int

<情報1>

SQLCODE

SDBデータベース操作の処理結果(SQLCODE)を設定します。

なし

10+(1×n)+ SQLCODEのサイズ

4

int

<情報2>

アクセス件数

表7-12 SDBデータベース操作イベントのアクセス件数」の1回の操作で記録するアクセス件数の単一要求の内容で設定します。複数要求の場合も,個々のレコードごとに単一要求の内容で設定します。

エラーの場合(SQLCODE<0)や,情報の取得ができない場合は,領域そのものが存在しません(対応する情報管理部のIND:0xFF)。

10+(1×n)+ SQLCODEのサイズ+アクセス件数のサイズ

(a) レコード操作キー情報」を参照

<情報3>

レコード操作キー情報を設定します。

注※

情報管理部の対応するインジケータ(IND)が,情報領域なし(0xFF)の場合は0となります。

(a) レコード操作キー情報

■4V FMBまたはSD FMBのSDBデータベースの場合

レコード操作キー情報の形式を次の図に示します。

図7‒17 レコード操作キー情報の形式(4V FMBまたはSD FMBのSDBのデータベースの場合)

[図データ]

[説明]

サイズ部には,すべてのエントリ(RK〜UK)が存在し,それぞれキー部の情報と対応します。サイズ部の各エントリに設定したサイズでキー情報が存在します。サイズが0の場合,キー情報の領域そのものが存在しません。複数レコードの検索(FETCHDB ALL)では,RKおよびルートレコードのデータベースキーだけを設定します。

NOT FOUND時(SQLCODE=100)は,アクセスレコードの階層レベルのキーサイズ(複数レコードの検索(FETCHDB ALL)の場合はRK)およびUKに0を設定します。

  • RK:ルートレコードのデータベースキーのサイズを設定します。

  • K2〜K15:子レコードの場合,アクセスしたレコードの階層まで一連番号のサイズ4を設定し,それ以降は0を設定します。

  • UK:アクセスレコードがユーザキーを持つ場合,ユーザキーサイズを設定し,持たない場合は0を設定します。

■4V AFMのSDBデータベースの場合

レコード操作キー情報の形式を次の図に示します。

図7‒18 レコード操作キー情報の形式(4V AFMのSDBデータベースの場合)

[図データ]

[説明]

サイズ部には,すべてのエントリ(K〜UK)が存在し,L2〜L7,Nはそれぞれキー部の情報と対応します。サイズ部の各エントリに設定したサイズでキー情報が存在します。サイズ0の場合,キー情報の領域そのものが存在しません。

NOT FOUND時(SQLCODE=100)は,サイズ部のエントリに0を設定します。

  • K:キー全体のサイズ

  • L2〜L7:各レベルのキー(構成要素名称がDBKEYで一連番号を除く)サイズ

  • X:未使用エントリ

    0を設定します。このエントリに対応するキー情報の領域はありません。

  • N:一連番号のエリアサイズ

    4を設定します。

  • UK:アクセスレコードがユーザキーを持つ場合,ユーザキーサイズを設定します。持たない場合は,0を設定します。