Hitachi

ノンストップデータベース HiRDB Version 10 システム運用ガイド(UNIX(R)用)


24.3.2 イベント終了時の出力パターン

一つのイベントに対して複数の監査証跡(イベントの対象となるオブジェクト数分の監査証跡)が取得されます。基本的には,監査証跡表の操作対象オブジェクト情報以外の列は,すべて同じ内容を出力します。ただし,ユティリティなど,操作対象ごとにイベントの結果が異なる場合は,終了コードごとに異なる内容を出力します。監査証跡の出力パターンの例を次に示します。

〈この項の構成〉

(1) 対象オブジェクト又は対象ユーザが複数の場合

(a) 対象オブジェクトが複数の場合

例えば,SELECT * FROM "T1","T2"と実行した場合,次に示すようにオブジェクトT1とT2に関して2行の監査証跡が出力されます。このとき,終了コードはすべて同じ値が記録されます。

...

イベントサブタイプ

...

オブジェクト名称

...

終了コード

...

...

SEL

...

T1

...

XXX

...

...

SEL

...

T2

...

XXX

...

ルーチンの再作成,スキーマ単位のデータベース再編成ユティリティなどは,オブジェクトによってイベントの成功と失敗に分かれることがあります。その場合は,オブジェクトごとに異なる終了コードを出力します。対象オブジェクトが複数になる場合があるイベントの一覧を次の表に示します。

表24‒6 対象オブジェクトが複数になる場合があるイベントの一覧(イベントの実行単位と監査証跡レコード出力単位の詳細)

イベント名称

実行単位

出力単位の対象

出力レコード数

SQLコード又は

終了コード

GRANT,

REVOKE

ユーザ

ユーザ

対象ユーザ数

イベント対象オブジェクトに対してすべて同じ値

ロール

ロール

対象ロール数

CREATE CONNECTION SECURITY,

DROP CONNECTION SECURITY

CONNECT関連セキュリティ機能の設定値

CONNECT関連セキュリティ機能の設定値

CONNECT関連セキュリティ機能の設定値数

操作系SQL

実表

  • 実表

  • 順序数生成子

対象実表数

+対象順序数生成子数

ビュー表

  • ビュー表

  • 順序数生成子

対象ビュー表数

+対象順序数生成子数

ALTER ROUTINE,

ALTER PROCEDURE,

ALTER TRIGGER

複数のルーチン又はトリガ※1

プロシジャ,関数,トリガ

対象ルーチン数分

イベント対象オブジェクトごとに異なる値

pdload

  • 実表

  • RDエリア

  • 実表

  • 順序数生成子

対象実表数

+対象順序数生成子数

pdexp,

pddefrev

実表

実表

対象実表数

ビュー表

ビュー表

対象ビュー表数

ストアドプロシジャ

ストアドプロシジャ

対象ストアドプロシジャ数

トリガ

トリガ

対象トリガ数

pdrorg

スキーマ※2,実表,インデクス

実表

対象実表数

ディクショナリ表のメンテナンス(インデクスの追加)

インデクス

対象インデクス数

pdaudbegin,

pdaudend

ユニット

ユニット

対象ユニット数

注※1

ルーチン情報が取得できない場合は,オブジェクト情報にNULL値を記録して監査証跡を1行だけ出力します。

注※2

スキーマ単位の再編成の場合,スキーマ内の表情報が取得できないときは,オブジェクト情報にスキーマ情報を記録して監査証跡を1行だけ出力します。

(b) 副問い合せの場合

例えば,UPDATE "T1" SET "C1" = (SELECT "C1" FROM "T2" WHERE CODE = '01') WHERE CODE = '01'と実行した場合,(a)と同じくアクセスしたオブジェクト情報を出力します。このとき,イベントタイプとサブタイプには,オブジェクトに対するアクションの監査証跡を次に示すように出力します。このとき,各イベント終了時の監査証跡のSQLコードはすべて同じ値が記録されます。

...

イベントサブタイプ

...

オブジェクト名称

...

終了コード

...

...

UPD

...

T1

...

XXX

...

...

SEL

...

T2

...

XXX

...

(2) 内部的に動作するSQLの場合

実行したSQLの延長でほかのSQLが実行されることがあります。イベントを実行したときに,延長で実行されるSQLを監査対象として定義している場合,延長で実行されるSQLの対象オブジェクト又はユーザの情報を取得します。このとき,オブジェクト又はユーザに対するイベントタイプとサブタイプには,延長で実行されたSQLのイベントタイプとサブタイプが記録されます。また,各監査証跡のSQLコードはどのオブジェクトに対してもすべて同じ値が記録されます。

例えば,DROP SCHEMAの延長で表が削除された場合,スキーマの情報とは別に,アクセスしたオブジェクトとして,表などのオブジェクト情報を出力します。削除処理中にエラー終了した場合は,エラーになるまでにアクセスしたオブジェクトとユーザ数分の監査証跡を出力します。

プロシジャやトリガなども,SQLの延長で更に自動的にSQLが実行されます。この場合,延長で実行されるSQLごとにイベント終了の監査証跡を出力します。トリガの場合は,実行者が一時的にトリガ所有者に切り替わるため,イベントの実行者にトリガ所有者が記録されます。プロシジャの場合は,CALL文のイベント終了の監査証跡も出力します。プロシジャがネストしていた場合は,各CALL文に対して,イベント終了の監査証跡を出力します。トリガ及びプロシジャ実行時の監査証跡レコード出力単位の詳細を次の表に示します。

表24‒7 トリガ及びプロシジャ実行時の監査証跡レコード出力単位の詳細

種別

イベントの実行者(認可識別子の値)

監査証跡レコードの出力単位

トリガ

ユーザトリガ

トリガ所有者

トリガ内SQL単位

システムトリガ(参照制約などの内部トリガ)

トリガ所有者

システムトリガ内SQL単位

プロシジャ

プロシジャ実行者

プロシジャ内SQL単位+CALL文

トリガやプロシジャ内のSQLでエラーが発生した場合,その時点のSQLのイベントの結果,そのトリガの契機となったSQLのイベントの結果,CALL文の結果に同じSQLコードを出力します。トリガ中のエラー発生箇所と監査証跡(SQLコード)の詳細とプロシジャ中のエラー発生箇所と監査証跡(SQLコード)の詳細を次の表に示します。

表24‒8 トリガ中のエラー発生箇所と監査証跡(SQLコード)の詳細

BEFOREトリガのSQL結果[1]

トリガ契機のSQL結果

[2]

AFTERトリガのSQL結果

[3]

監査証跡(SQLコード)の詳細

[1]の監査証跡

[2]の監査証跡

[3]の監査証跡

エラー

[1]のSQLコード

[1]のSQLコード

×

正常

エラー

[2]のSQLコード

×

正常

エラー

[3]のSQLコード

[3]のSQLコード

正常

0

0

0

(凡例)

−:該当しません。

×:監査証跡(SQLコード)を出力しません。

表24‒9 プロシジャ中のエラー発生箇所と監査証跡(SQLコード)の詳細

ネストの有無

監査証跡取得対象イベントの詳細

監査証跡(SQLコード)の詳細

[1]

[2]

[3]

[4]

[5]

[1]の監査証跡

[2]の監査証跡

[3]の監査証跡

[4]の監査証跡

[5]の監査証跡

なし

エラー

エラー

[1]のSQLコード

×

×

×

[1]のSQLコード

正常

エラー

0

×

×

×

[5]のSQLコード

正常

0

×

×

×

0

あり

エラー

エラー

[1]のSQLコード

×

×

×

[1]のSQLコード

正常

エラー

エラー

エラー

0

[2]のSQLコード

[2]のSQLコード

×

[2]のSQLコード

正常

エラー

エラー

0

0

[3]のSQLコード

×

[3]のSQLコード

正常

エラー

エラー

0

0

0

[4]のSQLコード

[4]のSQLコード

正常

エラー

0

0

0

0

[5]のSQLコード

正常

0

0

0

0

0

(凡例)

−:該当しません。

×:監査証跡(SQLコード)を出力しません。

[1]:ネスト前プロシジャ中のSQLの結果

[2]:ネスト後プロシジャ中のSQLの結果

[3]:ネストしているCALL文の結果

[4]:ネスト前プロシジャ中のSQLの結果

[5]:CALL文の結果

[図データ]

(3) 動的SQLの場合

動的SQLの場合は,PREPAREから実行までを一つのSQLとし,その単位でイベント終了の監査証跡を一つ出力します。実行時のイベント終了時の監査証跡出力タイミングは,OPEN,CLOSE,又はEXECUTE完了時です。操作系SQLの種類による動的SQLの流れを次の図に示します。

図24‒3 操作系SQLの種類による動的SQLの流れ

[図データ]

〔説明〕

網掛けしているSQLが監査証跡を出力する契機です。ただし,PREPARE,CLOSE,及びOPENの監査証跡は,エラーの発生箇所によって監査証跡の取得方法が異なります。動的SQL実行時のイベント成否による監査証跡の有無を次の表に示します。

表24‒10 動的SQL実行時のイベント成否による監査証跡の有無

SQL結果

取得指定

成功

失敗

両方

PREPARE成功

OPEN(EXECUTE)成功

CLOSE成功

CLOSE(EXECUTE)で出力する

出力しない

CLOSE(EXECUTE)で出力する

CLOSE失敗

出力しない

CLOSE(EXECUTE)で出力する

CLOSE(EXECUTE)で出力する

OPEN(EXECUTE)失敗

出力しない

OPEN(EXECUTE)で出力する

PREPARE失敗

出力しない

PREPAREで出力する

EXECUTE IMMEDIATE

EXECUTE IMMEDIATEで出力する

(凡例)−:該当しません。

明示的にCLOSE文を実行しなくても,内部的にCLOSE文を実行してカーソルを閉じる契機で,イベント終了の監査証跡を出力します。契機については,マニュアル「HiRDB SQLリファレンス」のCLOSE文を参照してください。