故事是这样的……
在上周修复一个分目录统计的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
至此,“坏人”落网。阿弥陀佛~~
参考文章:http://cyr1974.itpub.net/post/2066/278990
分享到:
相关推荐
在Oracle数据库中,触发器(Triggers)是一种存储过程,它们自动执行,当特定的数据库事件发生时,如INSERT、UPDATE或DELETE操作。调试Oracle触发器是开发和维护数据库应用程序时的重要步骤,可以帮助我们找出潜在的...
在Oracle数据库中,触发器是一种特殊类型的存储过程,它会在特定的数据库操作(如INSERT、UPDATE或DELETE)发生时自动执行。在这个场景中,我们关注的是一个特定的触发器,它在插入数据后被调用,并通过存储过程来...
理解并熟练掌握Oracle触发器的Before和After机制,对于确保数据的完整性和一致性至关重要。通过合理设计触发器,可以自动化数据校验、日志记录和事务处理,提高数据库应用程序的可靠性和效率。无论是日常的数据库...
Oracle 触发器是一种特殊的存储过程,它在插入、删除或修改特定表中的数据时触发执行,它比数据库本身标准的功能有更精细和更复杂的数据控制能力。触发器可以基于数据库的值使用户具有操作数据库的某种权利,基于...
其中,系统触发器是Oracle提供的一种强大工具,能够帮助管理员监控并干预特定的数据库操作,有效防止误操作导致的数据丢失。 #### 问题描述 当DBA或其他用户具有足够的权限时,可能会因为输入错误等原因执行`DROP ...
1、行级触发器不支持 ...所以想要触发器对自身表数据做修该,则用行级触发器得到 :new 和 :old对象中的相关数据,然后将这样的数据保存到 package中,然后在语句级触发期中调用 package包中保存的数据,进行更新操作
Oracle触发器是一种特殊的存储过程,它可以在数据库中自动执行一些操作,主要用于实现数据的完整性、数据的安全性和业务逻辑的实现。触发器可以分为四种类型:DML触发器、DDL触发器、替代触发器和数据库事件触发器。...
在深入探讨如何利用Oracle触发器备份表数据之前,我们首先需要理解几个关键概念:Oracle数据库、触发器以及备份策略。Oracle数据库是全球领先的数据库管理系统之一,以其强大的性能、可靠的安全性和丰富的功能受到...
Oracle触发器调用Java程序 Oracle触发器是Oracle数据库中的一种机制,可以在数据库中执行特定的操作。在本文中,我们将介绍如何使用Oracle触发器调用Java程序。 一、加载Java程序 首先,我们需要将Java程序加载到...
【Oracle触发器的创建与使用】是数据库管理中不可或缺的一部分,尤其在Oracle数据库系统中,触发器扮演着关键角色。触发器是一种存储过程,当特定的数据库事件发生时(如INSERT、UPDATE或DELETE操作),它会被自动...
Oracle 触发器实例讲解 Oracle 触发器是一种特定事件出现的时候,自动执行的代码块。类似于存储过程,但是用户不能直接调用他们。它主要有以下几个功能: 1. 允许/限制对表的修改:触发器可以控制对表的修改操作,...
Oracle触发器是数据库管理系统中的一种特殊程序,它与数据库表的操作紧密相关,可以在特定的数据操作事件(如INSERT、UPDATE或DELETE)发生时自动执行。在本实验报告中,主要涉及了Oracle触发器与参照完整性约束的...
在Oracle数据库系统中,触发器和存储过程是数据库管理员和开发人员进行复杂业务逻辑处理和数据管理的重要工具。下面将详细阐述这两个概念以及它们在实际应用中的高级编程技巧。 首先,触发器(Triggers)是Oracle...
2. **触发器的时机**:触发器可以在事件发生前(BEFORE)或后(AFTER)执行,此外,还有一种特殊的触发器类型——INSTEAD OF触发器,它在特定条件下替代触发事件的执行。 3. **触发器的使用场景**:触发器常用于...
"基于Oracle触发器的数据实时同步的实现——在员工医疗保险系统中" 本文主要讨论了基于Oracle触发器的数据实时同步的实现,在员工医疗保险系统中演示了数据同步的重要性和实现方法。随着全球化的发展,企业对数据...
Oracle触发器是数据库对象之一,它在特定的数据库操作(如INSERT、UPDATE或DELETE)发生时自动执行。触发器主要用于实现复杂的业务规则和数据验证,它们可以扩展SQL的功能,允许在数据修改前后执行一系列的动作。...
### Oracle触发器语法要点 #### 一、触发器概述 ...通过以上示例,可以看出触发器在Oracle数据库中扮演着非常重要的角色,不仅可以帮助维护数据的一致性和完整性,还可以用于实现各种复杂的应用逻辑。
Oracle 触发器是一种特殊的存储过程,它在插入、删除或修改特定表中的数据时触发执行,它比数据库本身标准的功能有更精细和更复杂的数据控制能力。数据库触发器有以下几种作用: 1. 安全性。可以基于数据库的值使...
Oracle触发器可以响应数据表的DML(数据操纵语言)事件,如INSERT、UPDATE或DELETE,也可以响应DDL(数据定义语言)事件,如CREATE、ALTER或DROP等。在本文件中,主要讨论的是针对数据表UPDATE操作的触发器执行顺序...