故事是这样的……
在上周修复一个分目录统计的BUG,测试后OK本周一上线的,可是上线后数据一会儿正确一会儿错误,认真分析后发现新程序把数据入库后,一会又被“坏人”写入错误数据。
就这样一场找“坏人”的斗争就这样开始……
1. 创建跟踪记录日志表
create table RESULT
(
IP VARCHAR2(256),
MYDATE DATE,
TYPE VARCHAR2(20)
)
tablespace USERS
pctfree 10
initrans 1
maxtrans 255
storage
(
initial 64K
minextents 1
maxextents unlimited
);
2. 创建insert跟踪触发器
create or replace trigger tri_insert
after insert on country
for each row
begin
DECLARE
v_user_identifier VARCHAR2(64);
BEGIN
SELECT SYS_CONTEXT('USERENV', 'OS_USER') || ':' ||
SYS_CONTEXT('USERENV', 'IP_ADDRESS')
INTO v_user_identifier
FROM DUAL;
insert into result (ip, mydate,type) values (v_user_identifier, sysdate,'INSERT');
END;
end TRI_INSERT;
3. 创建Delete跟踪触发器
create or replace trigger TRI_DELETE
after delete on country
for each row
begin
DECLARE
v_user_identifier VARCHAR2(64);
BEGIN
SELECT SYS_CONTEXT('USERENV', 'OS_USER') || ':' ||
SYS_CONTEXT('USERENV', 'IP_ADDRESS')
INTO v_user_identifier
FROM DUAL;
insert into result (ip, mydate,type) values (v_user_identifier, sysdate,'DEL');
END;
end TRI_DELETE;
4. 创建update跟踪触发器(省略)
5. 抓“坏人”
当Insert 、delete、update数据时,将会写操作记录,如下表所示:
1 heipark:192.168.1.61 2010/12/15 16:32:53 INSERT
2 heipark:192.168.1.61 2010/12/15 16:33:00 DEL
至此,“坏人”落网。阿弥陀佛~~