我想建一个ORACLE触发器跟踪数据表的插入和更新过程,跟踪是哪个用户/会话/IP或是机器执行的,但不知道怎么写,请大家帮忙!比如 table1  字段为FIELD1   从N更新为D

解决方案 »

  1.   

    http://wallimn.javaeye.com/blog/688123
    这里有关于审计的介绍 你看下吧
      

  2.   

    我不太懂ORACLE,看不懂,不会写,有没有人帮忙给写一个?
      

  3.   

    http://blog.csdn.net/xiaoshifeng/archive/2009/06/21/4286211.aspx
      

  4.   

    create or replace trigger stu_audi
      after   update or delete or insert on stu
       
    declare
      -- local variables here
      v_type varchar2(10);
    begin
      if updating then
        v_type := 'update';
      elsif deleting then
        v_type := 'delete';
      elsif inserting then
        v_type := 'insert';
      end if;
      update statistics
         set transaction_user = user, transaction_date = sysdate
       where table_name = 'stu'
         and transaction_name = v_type;
      if SQL%notfound then
        insert into statistics values ('stu', v_type, user, sysdate);
      end if;
    end stu_audi;
    我用这个表:
    SQL> desc statistics
     名称                                      是否为空? 类型
     ----------------------------------------- -------- ------------- TABLE_NAME                                         VARCHAR2(30)
     TRANSACTION_NAME                                   VARCHAR2(10)
     TRANSACTION_USER                                   VARCHAR2(10)
     TRANSACTION_DATE                                   DATE来记录执行的操作
    SQL> select * from statistics;TABLE_NAME                     TRANSACTIO TRANSACTIO TRANSACTION_DA
    ------------------------------ ---------- ---------- --------------
    stu                            insert     HR         30-12月-10
    stu                            delete     HR         30-12月-10
    不知道能不能满足你的要求