==Oracle Database10g アクティビティの監査==
[[Oracle][Oracle Database10g]]
===提供される監査===
*オプション指定(os, xml, xml,extendedにより、ファイルに書き出される場合、[http://otndnld.oracle.co.jp/document/products/oracle10g/102/doc_cd/server.102/B19228-04/initparams.htm#70855 AUDIT_FILE_DEST]に書き出される。
<<blockquote>>SQLBINDおよびSQLTEXTには、データベース初期化ファイルinit.oraでAUDIT_TRAIL=DB_EXTENDEDを指定しないかぎりデータは移入されません。 これは、CLOBデータの移入が比較的高コストであるためです。 <</blockquote>>
=====AUDIT_TRAILを変更=====
SQL> > alter system set audit_trail = db scope=spfile;
System altered.
=====データベースを再起動し、確認=====
SQL> > show parameters audit_
NAME TYPE VALUE
*特定のスキーマ・オブジェクトに対する操作の監査。スキーマ・オブジェクト操作の監査は、後続のセッションと同様に、現行のセッションにも適用されます。
SQL> > audit all by access;
Audit succeeded.
=====監査対象のテーブル=====
SQL> > desc exam.test
Name Null? Type
----------------------------------------- -------- ----------------------------
=====監査情報格納テーブルの作成=====
SQL> > create table system.test_audit ( test_id number, up_date date,
2 new_name char(10), old_name char(10) );
=====トリガーの作成=====
SQL> > create or replace trigger system.audit_test
2 before update of name on exam.test for each row
3 declare
=====1行更新=====
SQL> > update test set name = 'AAAAA' where id = 4;
1行が更新されました。
=====監査テーブルが更新された=====
SQL> > select * from system.test_audit;
TEST_ID UP_DATE NEW_NAME OLD_NAME
====FGA_POLICYの作成====
SQL> > execute dbms_fga.add_policy ( - > > object_schema => > 'exam', - > > object_name => > 'test', - > > policy_name => > 'chk_exam_test', - > > audit_condition => > 'id > > 0', - > > audit_column => > 'name', - > > statement_types => > 'insert,update,delete,select');
PL/SQL procedure successfully completed.
====監査対象のテーブルを操作====
SQL> > conn exam/north123@oradb1;
接続されました。
SQL> > select * from test
2 ;
3 ghi
SQL> > insert into test values (5, 'mno');
1行が作成されました。
SQL> > delete from test where id = 3;
1行が削除されました。