`
heipark
  • 浏览: 2097432 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

谁动了我的数据——让Oracle触发器查找“元凶”

阅读更多

故事是这样的……

在上周修复一个分目录统计的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 deleteupdate数据时,将会写操作记录,如下表所示:

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

分享到:
评论
1 楼 di1984HIT 2013-02-07  
写的不错。。。。。

相关推荐

    调试oracle触发器方法

    在Oracle数据库中,触发器(Triggers)是一种存储过程,它们自动执行,当特定的数据库事件发生时,如INSERT、UPDATE或DELETE操作。调试Oracle触发器是开发和维护数据库应用程序时的重要步骤,可以帮助我们找出潜在的...

    oracle 触发器实时调用java 中http接口

    在Oracle数据库中,触发器是一种特殊类型的存储过程,它会在特定的数据库操作(如INSERT、UPDATE或DELETE)发生时自动执行。在这个场景中,我们关注的是一个特定的触发器,它在插入数据后被调用,并通过存储过程来...

    关于oracle触发器before和after的应用问题

    理解并熟练掌握Oracle触发器的Before和After机制,对于确保数据的完整性和一致性至关重要。通过合理设计触发器,可以自动化数据校验、日志记录和事务处理,提高数据库应用程序的可靠性和效率。无论是日常的数据库...

    Oracle触发器语法详解

    Oracle 触发器是一种特殊的存储过程,它在插入、删除或修改特定表中的数据时触发执行,它比数据库本身标准的功能有更精细和更复杂的数据控制能力。触发器可以基于数据库的值使用户具有操作数据库的某种权利,基于...

    利用 Oracle 系统触发器防止误删除表操作

    其中,系统触发器是Oracle提供的一种强大工具,能够帮助管理员监控并干预特定的数据库操作,有效防止误操作导致的数据丢失。 #### 问题描述 当DBA或其他用户具有足够的权限时,可能会因为输入错误等原因执行`DROP ...

    Oracle触发器修改自身表

    1、行级触发器不支持 ...所以想要触发器对自身表数据做修该,则用行级触发器得到 :new 和 :old对象中的相关数据,然后将这样的数据保存到 package中,然后在语句级触发期中调用 package包中保存的数据,进行更新操作

    oracle_触发器的种类和触发事件

    Oracle触发器是一种特殊的存储过程,它可以在数据库中自动执行一些操作,主要用于实现数据的完整性、数据的安全性和业务逻辑的实现。触发器可以分为四种类型:DML触发器、DDL触发器、替代触发器和数据库事件触发器。...

    Oracle触发器备份表数据

    在深入探讨如何利用Oracle触发器备份表数据之前,我们首先需要理解几个关键概念:Oracle数据库、触发器以及备份策略。Oracle数据库是全球领先的数据库管理系统之一,以其强大的性能、可靠的安全性和丰富的功能受到...

    个人亲测oracle触发器调用java程序

    Oracle触发器调用Java程序 Oracle触发器是Oracle数据库中的一种机制,可以在数据库中执行特定的操作。在本文中,我们将介绍如何使用Oracle触发器调用Java程序。 一、加载Java程序 首先,我们需要将Java程序加载到...

    oracle触发器的创建与使用

    【Oracle触发器的创建与使用】是数据库管理中不可或缺的一部分,尤其在Oracle数据库系统中,触发器扮演着关键角色。触发器是一种存储过程,当特定的数据库事件发生时(如INSERT、UPDATE或DELETE操作),它会被自动...

    Oracle触发器 实例讲解

    Oracle 触发器实例讲解 Oracle 触发器是一种特定事件出现的时候,自动执行的代码块。类似于存储过程,但是用户不能直接调用他们。它主要有以下几个功能: 1. 允许/限制对表的修改:触发器可以控制对表的修改操作,...

    Oracle触发器实验报告

    Oracle触发器是数据库管理系统中的一种特殊程序,它与数据库表的操作紧密相关,可以在特定的数据操作事件(如INSERT、UPDATE或DELETE)发生时自动执行。在本实验报告中,主要涉及了Oracle触发器与参照完整性约束的...

    Oracle触发器与存储过程高级编程-第3版itpub.rar

    在Oracle数据库系统中,触发器和存储过程是数据库管理员和开发人员进行复杂业务逻辑处理和数据管理的重要工具。下面将详细阐述这两个概念以及它们在实际应用中的高级编程技巧。 首先,触发器(Triggers)是Oracle...

    Oracle触发器与存储过程高级编程

    2. **触发器的时机**:触发器可以在事件发生前(BEFORE)或后(AFTER)执行,此外,还有一种特殊的触发器类型——INSTEAD OF触发器,它在特定条件下替代触发事件的执行。 3. **触发器的使用场景**:触发器常用于...

    基于Oracle触发器的数据实时同步的实现——在员工医疗保险系统中.pdf

    "基于Oracle触发器的数据实时同步的实现——在员工医疗保险系统中" 本文主要讨论了基于Oracle触发器的数据实时同步的实现,在员工医疗保险系统中演示了数据同步的重要性和实现方法。随着全球化的发展,企业对数据...

    oracle触发器功能介绍

    Oracle触发器是数据库对象之一,它在特定的数据库操作(如INSERT、UPDATE或DELETE)发生时自动执行。触发器主要用于实现复杂的业务规则和数据验证,它们可以扩展SQL的功能,允许在数据修改前后执行一系列的动作。...

    oracle触发器语法要点

    ### Oracle触发器语法要点 #### 一、触发器概述 ...通过以上示例,可以看出触发器在Oracle数据库中扮演着非常重要的角色,不仅可以帮助维护数据的一致性和完整性,还可以用于实现各种复杂的应用逻辑。

    Oracle触发器的概念和类型

    Oracle 触发器是一种特殊的存储过程,它在插入、删除或修改特定表中的数据时触发执行,它比数据库本身标准的功能有更精细和更复杂的数据控制能力。数据库触发器有以下几种作用: 1. 安全性。可以基于数据库的值使...

    oracle触发器执行顺序.pdf

    Oracle触发器可以响应数据表的DML(数据操纵语言)事件,如INSERT、UPDATE或DELETE,也可以响应DDL(数据定义语言)事件,如CREATE、ALTER或DROP等。在本文件中,主要讨论的是针对数据表UPDATE操作的触发器执行顺序...

Global site tag (gtag.js) - Google Analytics