监控数据库中的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, nullnull);  
END;
/

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值