简单利用触发器监控表记录的更改
程序员文章站
2022-06-05 09:17:00
...
监控数据库用户行为可以利用数据库审计,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;