监控数据库中的DDL事件

    技术2022-05-11  71

    监控数据库中的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  LogDDLActionsBEFORE 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)