スケーラブルデータベースサーバ HiRDB Version 8 システム運用ガイド(UNIX(R)用)
一つのイベントに対して複数の監査証跡(イベントの対象となるオブジェクト数分の監査証跡)が取得されます。基本的には,監査証跡表の操作対象オブジェクト情報以外の列は,すべて同じ内容を出力します。ただし,ユティリティなど,操作対象ごとにイベントの結果が異なる場合は,終了コードごとに異なる内容を出力します。監査証跡の出力パターンの例を次に示します。
例えば,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 |
|
|
対象実表数 +対象順序数生成子数 |
|
pdexp, pddefrev |
実表 | 実表 | 対象実表数 | |
ビュー表 | ビュー表 | 対象ビュー表数 | ||
表別名 | 表別名 | 対象表別名数 | ||
ストアドプロシジャ | ストアドプロシジャ | 対象ストアドプロシジャ数 | ||
トリガ | トリガ | 対象トリガ数 | ||
pdrorg | スキーマ※2,実表,インデクス | 実表 | 対象実表数 | |
pdaudbegin, pdaudend |
ユニット | ユニット | 対象ユニット数 |
例えば,UPDATE "T1" SET "C1" = (SELECT "C1" FROM "T2" WHERE CODE = '01') WHERE CODE = '01'と実行した場合,(a)と同じくアクセスしたオブジェクト情報を出力します。このとき,イベントタイプとサブタイプには,オブジェクトに対するアクションの監査証跡を次に示すように出力します。このとき,各イベント終了時の監査証跡のSQLコードはすべて同じ値が記録されます。
... | イベントサブタイプ | ... | オブジェクト名称 | ... | 終了コード | ... |
---|---|---|---|---|---|---|
... | UPD | ... | T1 | ... | XXX | ... |
... | SEL | ... | T2 | ... | XXX | ... |
実行した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 |
表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の場合は,PREPAREから実行までを一つのSQLとし,その単位でイベント終了の監査証跡を一つ出力します。実行時のイベント終了時の監査証跡出力タイミングは,OPEN,CLOSE,又はEXECUTE完了時です。操作系SQLの種類による動的SQLの流れを次の図に示します。
図23-3 操作系SQLの種類による動的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で出力する |
All Rights Reserved. Copyright (C) 2006, 2016, Hitachi, Ltd.