Heim  >  Artikel  >  Datenbank  >  简单利用触发器监控表记录的更改

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

WBOY
WBOYOriginal
2016-06-07 15:54:341525Durchsuche

监控数据库用户行为可以利用数据库审计,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;
Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Vorheriger Artikel:oracle各种trace清理Nächster Artikel:FlashbackQuery闪回查询