首页 > 数据库 > mysql教程 > 简单利用触发器监控表记录的更改

简单利用触发器监控表记录的更改

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
发布: 2016-06-07 15:54:34
原创
1636 人浏览过

监控数据库用户行为可以利用数据库审计,LogMiner日志挖掘,触发器等手段,但前两者操作起来比较麻烦,利用触发器可简单的满足一些特殊的监控需求。 以下是利用触发器监控表记录被谁更改的例子: ---显示授权给所有用户查询这两个视图grant select on sys.v_

监控数据库用户行为可以利用数据库审计,LogMiner日志挖掘,触发器等手段,但前两者操作起来比较麻烦,利用触发器可简单的满足一些特殊的监控需求。

以下是利用触发器监控表记录被谁更改的例子:

---显示授权给所有用户查询这两个视图
grant select on sys.v_$session to public;
grant select on sys.v_$sqlarea to public;

---创建日志记录表
create table log_monitor_tab(sql_text varchar2(400),
                             username varchar2(30),
                             schemaname varchar2(30),
                             osuser varchar2(30),
                             ip_address varchar2(15),
                             machine varchar2(50),
                             program varchar2(50),
                             modifytime date);

----创建触发器
create or replace trigger tri_monitor_tab
  before insert or update or delete 
  on table_name --填入相应的表名
  for each row
begin  
  insert into log_monitor_tab
    select sq.sql_text,
           se.username,
           se.schemaname,
           se.osuser,
           SYS_CONTEXT('USERENV', 'IP_ADDRESS'),
           se.machine,
           se.program,
           sysdate
      from v$sqlarea sq, v$session se
     where sq.address = se.sql_address
       and se.sid = userenv('sid');
end;

---查询日志表log_monitor_tab记录
select * from log_monitor_tab order by modifytime asc;
登录后复制
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
感觉php又难又简单
来自于 1970-01-01 08:00:00
0
0
0
javascript - 有没有简单的写法
来自于 1970-01-01 08:00:00
0
0
0
Laravel 如何打印简单的数组
来自于 1970-01-01 08:00:00
0
0
0
用MySQL计算中位数的简单方法
来自于 1970-01-01 08:00:00
0
0
0
谁能提供一个PHP简单的MVC实现的git地址?
来自于 1970-01-01 08:00:00
0
0
0
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板