在oracle9i上可以使用下面的trigger捕获DML语句:
create or replace trigger capt_sql
BEFORE DELETE OR INSERT OR UPDATE ON t1 FOR EACH ROW
declare
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 t_sql(USERNAME,CLIENT_IP,SQL_TEXT,TABLE_NAME,OWNER)
values(user,sys_context('userenv','ip_address'),stmt,'T1','RAINY');
END;
/
注意:该方法在9207以上的版本中不再适用。
ORA_SQL_TXT is a "System defined event attribute" and is supposed to work only with "System triggers".
从9207开始,ORA_SQL_TXT返回的值是NULL,仅在系统事件触发器中才有效。
create or replace trigger capt_sql
BEFORE DELETE OR INSERT OR UPDATE ON t1 FOR EACH ROW
declare
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 t_sql(USERNAME,CLIENT_IP,SQL_TEXT,TABLE_NAME,OWNER)
values(user,sys_context('userenv','ip_address'),stmt,'T1','RAINY');
END;
/
注意:该方法在9207以上的版本中不再适用。
ORA_SQL_TXT is a "System defined event attribute" and is supposed to work only with "System triggers".
从9207开始,ORA_SQL_TXT返回的值是NULL,仅在系统事件触发器中才有效。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/228190/viewspace-201895/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/228190/viewspace-201895/