Blog / 阅读

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

by admin on 2014-04-02 12:06:42 in ,



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

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

[sql] view plaincopy
---显示授权给所有用户查询这两个视图  
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;  



写评论

相关文章

上一篇:mysql的text字段长度?mysql数据库中text字段长度不够的问题

下一篇:oracle常用命令大全

评论

写评论

* 必填.

分享

栏目

赞助商


热门文章

Tag 云