==================================9i版本============================
create or replace trigger trg_capt_czsql
BEFORE DELETE OR INSERT OR UPDATE ON sbrzdeclare
n number;
stmt varchar2(4000);
sql_text ora_name_list_t;
begin
n := ora_sql_txt(sql_text);
FOR i IN 1..n LOOP
stmt := stmt || sql_text(i);
END LOOP;
insert into CZSQL(ID,SQL_TEXT)
values(null,stmt);
end;
insert into sbrz values(null,1,'1','1','1',222,'1','1',1,1,'2011-07-19');
==================================10g版本============================
(因为10g不支持 ora_sql_txt函数)
关联v$session v$sql_text DML语句
(http://www.itpub.net/thread-1075683-1-1.html)
begin
dbms_fga.add_policy(object_schema => 'tjxt',
object_name => 'sbrz',
policy_name => 'sbrz_audit',
statement_types => 'insert,update,delete'
);
end;
/
查看捕获策略
select * from dba_audit_policies;
查看捕获信息
select timestamp,userhost,os_user,db_user,object_schema,object_name,statement_type,sql_text,policy_name from dba_fga_audit_trail order by timestamp;
[select timestamp,sql_text from dba_fga_audit_trail where policy_name = 'SBRZ_AUDIT' order by timestamp;]
策略的删除:
SQL> exec dbms_fga.drop_policy(object_schema=>'zk', object_name => 'cm_busi_handle_200903',policy_name => 'cm_busi_audit');
PL/SQL procedure successfully completed