zoukankan      html  css  js  c++  java
  • Orcal创建触发器

    在工作,发现公共的一张表某个字段的数据一直被删除。但是系统庞大,短时间难以定位是哪里删除了这些数据。因此萌生了创建一个触发器【审计开销太大】,记录删除这张表的操作。遗憾的是Orcal 11无法使用ora_sql_txt记录操作的SQL语句。

    一、触发器语法

    -- 创建触发器
    create or replace trigger 触发器名
      before|after|instead of 触发时间
      on 触发对象 表|视图 (for each row)
      begin
        触发操作
      end;

    参考

    二、实例

    --1.创建删除记录表 监控用户删除某个表的操作
    --drop table ZT_DELETETABLEINFO;
    create table ZT_DELETETABLEINFO
    (
      operatoruser      VARCHAR2(20),
      machine      VARCHAR2(32),
      ip      VARCHAR2(32),
      operatortime   DATE,
      dmlsql    VARCHAR2(4000),
      tablename     VARCHAR2(256)
    );
    comment on table ZT_DELETETABLEINFO is '删除记录表';
    comment on column ZT_DELETETABLEINFO.operatoruser is '操作用户';
    comment on column ZT_DELETETABLEINFO.operatoruser is '机器';
    comment on column ZT_DELETETABLEINFO.ip is '操作IP';
    comment on column ZT_DELETETABLEINFO.operatortime  is '操作时间';
    comment on column ZT_DELETETABLEINFO.dmlsql is '执行的SQL语句';
    comment on column ZT_DELETETABLEINFO.tablename is '被删除的表';
    
    --2.创建触发器 监控 删除表记录
    --drop trigger ZT_DELETETABLEINFO_TRIGGER

    drop trigger ZT_DELETETABLEINFO_TRIGGER;
    create trigger ZT_DELETETABLEINFO_TRIGGER
      before delete on tablename
      for each row
      begin
        IF :old.cloumn= 'cloumn' THEN --这里加过滤条件
          insert into ZT_DELETETABLEINFO
          (operatoruser, machine, ip, operatortime, dmlsql,tablename)
        values
          (user,SYS_CONTEXT('USERENV', 'HOST'),sys_context('userenv', 'ip_address'),sysdate,'','tablename');
        END IF;
      end;

     
    -- 1.查询当前登录用户
    select user,ora_login_user from dual;
    -- 2.查询当前登录IP
    select SYS_CONTEXT('USERENV', 'IP_ADDRESS') as clientip from dual;
    -- 3.查询登录机器
    select SYS_CONTEXT('USERENV', 'HOST') as clientname  from dual;
  • 相关阅读:
    Linux_文件权限
    离殇
    Oracle数据库软件标准版的一个限制:仅仅能用一个rman channel
    数据结构和算法设计专题之---推断两个链表是否相交并找出交点
    Test for Job (poj 3249 记忆化搜索)
    表达式求值
    HDOJ 2196 Computer 树的直径
    ListView的position的保持
    Django訪问量和页面PV数统计
    【oracle 11G Grid 】Crsctl start cluster 和 crsctl start crs 有差别么?
  • 原文地址:https://www.cnblogs.com/zeussbook/p/14188989.html
Copyright © 2011-2022 走看看