监控数据库中的DDL事件

监控数据库中的DDL事件,直接获取终端的IP地址和终端名称,让你确切的知道谁在操作你的数据库!
他到底想做什么!

drop   trigger  LogDDLActions;
/
drop   table  ddl_actions;
/

-- ---------------------------------------------------------------
create   table  ddl_actions
(who 
varchar2 ( 100 ),
what 
varchar2 ( 2000 ),
when  date,
ip_address 
varchar2 ( 100 ),
terminal 
varchar2 ( 100 )
);
/

-- -----------------------------------------------------------------
CREATE   OR   REPLACE   TRIGGER  LogDDLActions
BEFORE DDL 
ON   DATABASE
DECLARE
   executor     ddl_actions.who
% TYPE;
   action       ddl_actions.what
% TYPE;
   ipaddr       ddl_actions.ip_address
% TYPE;
   tterminal    ddl_actions.terminal
% TYPE;
   
BEGIN
   executor :
=  LOGIN_USER;
   action   :
=  SYSEVENT || '   ' || DICTIONARY_OBJ_TYPE || '   '
      
|| DICTIONARY_OBJ_OWNER || ' . ' || DICTIONARY_OBJ_NAME;
      
   
SELECT   DISTINCT  TRIM(SYS_CONTEXT( ' userenv ' , ' ip_address ' )), terminal  INTO  ipaddr, tterminal
     
FROM  V_$SESSION 
    
WHERE  NVL(USERNAME, ' NULL ' =   USER  
      
AND  TERMINAL  =  USERENV( ' TERMINAL ' ); 
  
   
INSERT   INTO  ddl_actions  VALUES  (executor, action, SYSDATE, ipaddr, tterminal);
   
   EXCEPTION
            
WHEN  OTHERS  THEN
            
INSERT   INTO  ddl_actions  VALUES  (executor, action, SYSDATE,  null null );  
END ;
/

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值