スケーラブルデータベースサーバ HiRDB Version 8 システム運用ガイド(UNIX(R)用)

[目次][索引][前へ][次へ]

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

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

<この項の構成>
(1) 対象オブジェクト又は対象ユーザが複数の場合
(2) 内部的に動作するSQLの場合
(3) 動的SQLの場合

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

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

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

... イベントサブタイプ ... オブジェクト名称 ... 終了コード ...
... SEL ... T1 ... XXX ...
... SEL ... T2 ... XXX ...

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

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

イベント名称 実行単位 出力単位の対象 出力レコード数 SQLコード又は
終了コード
GRANT,
REVOKE
ユーザ ユーザ 対象ユーザ数 イベント対象オブジェクトに対してすべて同じ値
ロール ロール 対象ロール数
CREATE CONNECTION SECURITY,
DROP CONNECTION SECURITY
CONNECT関連セキュリティ機能の設定値 CONNECT関連セキュリティ機能の設定値 CONNECT関連セキュリティ機能の設定値数
操作系SQL 実表
  • 実表
  • 順序数生成子
対象実表数
+対象順序数生成子数
ビュー表
  • ビュー表
  • 順序数生成子
対象ビュー表数
+対象順序数生成子数
表別名
  • 表別名
  • 順序数生成子
対象表別名数
+対象順序数生成子数
外部表
  • 外部表
  • 順序数生成子
対象外部表数
+対象順序数生成子数
ALTER ROUTINE,
ALTER PROCDURE,
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文に対して,イベント終了の監査証跡を出力します。トリガ及びプロシジャ実行時の監査証跡レコード出力単位の詳細を次の表に示します。

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

種別 イベントの実行者(認可識別子の値) 監査証跡レコードの出力単位
トリガ ユーザトリガ トリガ所有者 トリガ内SQL単位
システムトリガ(参照制約などの内部トリガ) トリガ所有者 システムトリガ内SQL単位
プロシジャ プロシジャ実行者 プロシジャ内SQL単位+CALL文

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

表23-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コード)を出力しません。

表23-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の流れを次の図に示します。

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

[図データ]

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

表23-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 Version 8 SQLリファレンス」のCLOSE文を参照してください。