天地不仁,以万物为刍狗!
DML_monitor
上一篇 /
下一篇 2011-12-09 11:47:15
/ 个人分类:oracle
ITPUB个人空间zJj@A"Y*I|x"M
--跟踪某张表中数据的删除、新增、修改等过程:谁什么时候删的(能记录到IP,这点挺好)
+aC i:em*O&N*Z
v0--主要trigger的方式记录表数据的删除,再用sys_context取到操作用户的相关信息
--建立目标表,后边会记录所有基于该表的DML操作
"K{%\k/m v0create table zxt_test01
"Ld+y&]5r/QNE.o0(ITPUB个人空间E1g F4S+J8L
id1 varchar2(10),ITPUB个人空间a"bS+G$x)j}
id2 varchar2(10)ITPUB个人空间` {A%|.^.^7{5qr L
);
--建立记录跟踪表,用来记录相关信息
:}T7]GUZ0create table zxt_test01_triggerITPUB个人空间^(GJ*hlP.\-j~
(
w`3y"n'?&n Sj"\lj&e0USER_HOST varchar2(60),
edfed1ej+F0USER_IP varchar2(20),ITPUB个人空间TS OJ$?n
I7\
OS_user varchar2(30),
?(F!EF+w
i#{7``0TERMINAL varchar2(30),ITPUB个人空间%pu)GmcrV1t
db_user varchar2(30),ITPUB个人空间BL
uKQo@Mm
session_id varchar2(20),ITPUB个人空间*u YK&[#s
a^M8M
operate_time date,
L`7WT9I}J0tablename varchar2(40),
.I7u
TZT/m+T0operate_type varchar2(10)
[HH9s:y4XP6xB{)k0);
--建立基于目标表的触发器ITPUB个人空间?5B
s9m4n"w
create or replace trigger trig_af_de_zxt_test01
v:o#o:K!wG0 after delete on sb_bf_grgzxx
S'z:k/SfI@TK c0 for each rowITPUB个人空间[^4{
Y c1o
declare
~ weeZf-Qx1a0 -- local variables here
.q)^I$E0`$Zw3x6m i0 v_sessionid varchar2(20);
1KJ,]1Zg0begin
1jW9\|.?0TCuDV0 select t.SID into v_sessionid from v$session t where t.AUDSID=sys_context('USERENV','SESSIONID');
#~7]i9Vc2I0 insert into zxt_test01_trigger values(
"P@*u"rQ;U2z0 sys_context('USERENV','HOST'),ITPUB个人空间6J~+v)x3L3k
sys_context('USERENV','IP_ADDRESS'),