Oracle Database 10g Enterprise Edition> With the Partitioning, OLAP and Data Mining options
ORACLE_HOME = /opt/oracle/product/10.0
System name: SunOS
Node name: crmdb
Release: 5.10
Version: Generic_141414-07
Machine: sun4v
Instance name: wlan
Redo thread mounted by this instance: 1
Oracle process number: 53
Unix process pid: 18094, image: oracle@wlandb (TNS V1-V3)
Fri Apr 27 12:10:01 2012
ACTION : 'CONNECT'
DATABASE USER: '/'
PRIVILEGE : SYSDBA
CLIENT USER: oracle
CLIENT TERMINAL:
STATUS: 0
精细粒度审计:
A、 定义审计策略:
begin
dbms_fga.add_policy(object_schema => 'ADMIN',
object_name => 'T',
policy_name => 'audit_t',
audit_column => 'SALARY',
enable => TRUE,
statement_types => 'select,insert,update,delete');
end;
/
查询dba_audit_policies 表,结果如下;
OBJECT_SCHEMA OBJECT_NAME POLICY_NAME POLICY_COLUMN SEL INS UPD DEL
2 ADMIN T AUDIT_T SALARY YES YES YES YES
此时我们对T表进的SALARY列进行操作,然后查询dba_fga_audit_trail表,部分审计结果如下:
OBJECT_SCHEMA OBJECT_NAME POLICY_NAME SQL_TEXT STATEMENT_TYPE
1 ADMIN T AUDIT_T select * from t SELECT
2 ADMIN T AUDIT_T update t set salary=1000 where> 3 ADMIN T AUDIT_T insert into t values(3,'c',2000) INSERT
删除策略:
begin
dbms_fga.drop_policy(object_schema => 'ADMIN',
object_name => 'T',
policy_name => 'AUDIT_T');
end;
精细粒度的审计日志可以通过删除sys.fga_log$表进行清空。
最后,审计日志的清理:
1、 直接清除sys.aud$和sys.fga_log$表;
2、 利用DBMS_AUDIT_MGMT.INIT_CLEANUP设置策略清除:
BEGIN
IF
NOT DBMS_AUDIT_MGMT.IS_CLEANUP_INITIALIZED(DBMS_AUDIT_MGMT.AUDIT_TRAIL_AUD_STD)
THEN
DBMS_AUDIT_MGMT.INIT_CLEANUP(
audit_trail_type => DBMS_AUDIT_MGMT.AUDIT_TRAIL_AUD_STD,
default_cleanup_interval => 12 /* hours */);
END IF;
END;
/
包的具体用法可参考:
http://docs.oracle.com/cd/E11062_01/admin.1023/e11059/avadm_app_d_audit_mgmt.htm
3、转移表空间(未测试)
alter table sys.aud$ move tablespace users;
alter table sys.aud$ move lob(sqlbind) store as( tablespace USERS);
alter table sys.aud$ move lob(SQLTEXT) store as( tablespace USERS);
alter index sys.I_AUD1 rebuild tablespace users;