バックアップした監査ログを、別に定義した表にrdbsloaderコマンドまたはrdbsaloaderコマンドで格納して参照することができます。
別の表は、Symfoware/RDBで用意した定義文のひな型(表定義とビュー定義)を利用してrdbddlexコマンドを使用して定義します。
退避データを格納した後は、SQL文に必要な条件を指定してデータを検索することができます。
図10.3 監査ログを別の表に格納した場合の参照方法
rdbunladtコマンドでバックアップした監査ログは、以下の手順で参照します。
監査ログの格納先の表を定義します。
監査ログの格納先の表定義文のひな型を使用して、rdbddlexコマンドを実行します。以下に、表定義の手順を示します。
データベースの定義
任意の名前のデータベースを定義します。
データベーススペースの定義
任意の名前のデータベーススペースを定義します。スペースサイズは、格納する監査ログデータ量により見積もります。
なお、暗号化の指定(ENCRYPTION句)をしてデータベーススペースを定義することで、データベーススペースの盗難による監査ログデータの流出を防ぐことができます。
スキーマの定義
任意の名前のスキーマを定義します。
表およびビューの定義
表およびビューの定義は、以下に格納されているひな型を使用します。
X:\SFWSV\RDB\DEMO\AUDITTABLE_VERSION1.DDL
備考. Xはセットアップ先のドライブを示します。
ポイント
監査ログのビュー表AUDIT_SQL、AUDIT_SQLBIND、AUDIT_TRAIL_SESSIONおよびAUDIT_TRAIL_ACCESSが存在しない監査ログ表に対応する表およびビュー表のひな型定義文を使用する場合は、AUDITTABLE.DDLを使用してください。
表のDSO/DSIの定義
任意の名前の表のDSO/DSIを定義します。DSO/DSIの定義は、下表の注意が必要です。
項目 | 指定内容 | |
---|---|---|
DSO定義 | 格納構造 | SEQUENTIAL型を指定します。 |
ページ長 | 32を指定します。 | |
分割条件 | 指定の有無は任意です。たとえば、以下のように監査ログ取得日時を範囲で指定します。 | |
DSI定義 | 分割値 | 分割条件の指定の有無により指定します。 |
割付けサイズ | DSIに格納する監査ログデータの量により見積もります。 |
インデックスのDSO/DSI定義
インデックスのDSO/DSI定義は、データの参照方法により任意です。たとえば、以下のインデックスを構成する列を定義します。
- 監査ログ取得時間をキーにした検索 ACCESS_TIME - 利用者名をキーにした検索 USER_NAME
監査ログデータの復号
監査ログデータの退避ファイルを市販の暗号化ツールなどで暗号化していた場合は、復号してください。
監査ログデータの格納
定義した格納先への監査ログデータの格納は、rdbsloaderコマンドを使用して行います。入力データの形式は、テキスト形式(tオプション)を指定します。
監査ログデータの参照
創成した監査ログデータを格納する表をSQL文で参照します。
監査ログデータを格納する操作例
監査ログデータを格納する操作を以下に示します。
> rdbddlex C:\audit\ddl\db.ddl > rdbddlex -d WORK_ADT C:\audit\ddl\audittable_version1.ddl > rdbddlex -d WORK_ADT C:\audit\ddl\tbldsodsi.ddl > rdbsloader -mi -v C:\audit\dsilist\dsi07 -t C:\audit\log\07\data\datetime0100-0522.txt C:\audit\log\07\data\datetime0522-1022.txt C:\audit\log\07\data\datetime1022-1522.txt ・ ・
db.ddlの内容(データベースからスキーマ定義)を以下に示します。
CREATE DATABASE WORK_ADT; CREATE DBSPACE ADTDBS07 ALLOCATE FILE D:\SFWD\RDB\USR\ADTLOG\AUDIT_FILE001 ATTRIBUTE SPACE(5120M); CREATE SCHEMA ADT;
audittable_version1.ddlは表、ビュー表のひな型定義文です。
tbldsodsi.ddlの内容(表のDSO/DSIの定義)を以下に示します。
CREATE DSO ADTDSO FROM ADT.AUDIT TYPE SEQUENTIAL(PAGESIZE(32),ORDER(0)) WHERE (ACCESS_TIME) BETWEEN (?) AND (?); CREATE DSI ADTDSI0701 DSO ADTDSO USING (TIMESTAMP'2007-04-01 00:00:00', TIMESTAMP'2007-04-14 23:59:59') ALLOCATE DATA ON ADTDBS07 SIZE 2048M; CREATE DSI ADTDSI0702 DSO ADTDSO USING (TIMESTAMP'2007-04-15 00:00:00', TIMESTAMP'2007-04-30 23:59:59') ALLOCATE DATA ON ADTDBS07 SIZE 2048M;
dsi07の内容を以下に示します。
WORK_ADT.ADTDSI0701 WORK_ADT.ADTDSI0702