ORACLE 用户级数据表结构监测

因为工作需要监测哪些用户修改了数据库中的数据表。在参考了 http://www.psoug.org/reference/ddl_trigger.html内容后,做了如下设计:

1.以system用户登录。
     
2 -- 创建数据表
  1. create table csm_ddl_audit_log
  2. (
  3.   USER_NAME VARCHAR2(64),
  4.   DDL_DATE DATE,
  5.   DDL_TYPE VARCHAR2(64),
  6.   OBJECT_TYPE VARCHAR2(32),
  7.   OWNER VARCHAR2(64),
  8.   OBJECT_NAME VARCHAR2(128),
  9.   IP_ADDRESS VARCHAR2(40),
  10.   TERMINAL VARCHAR2(64)
  11. );
  12. create index CONS_DDL_LOG on csm_ddl_audit_log (IP_ADDRESS);
  13.   


3 -- 创建存储过程
  1. CREATE OR REPLACE TRIGGER ddl_trigger
  2.   AFTER CREATE OR ALTER OR DROP  ON SCOTT.SCHEMA  
  3.   /* 这里可以更改为需要监测的数据库用户 */
  4. BEGIN
  5.   IF ora_dict_obj_type = 'TABLE' or ora_dict_obj_type='INDEX' THEN
  6.     /* 条件判断,只保存数据表和索引的变更信息  */
  7.       BEGIN
  8.       INSERT INTO csm_ddl_audit_log
  9.         (user_name,
  10.          ddl_date,
  11.          ddl_type,
  12.          object_type,
  13.          owner,
  14.          object_name,
  15.          ip_address,
  16.          terminal)
  17.       VALUES
  18.         (ora_login_user,
  19.          SYSDATE,
  20.          ora_sysevent,
  21.          ora_dict_obj_type,
  22.          ora_dict_obj_owner,
  23.          ora_dict_obj_name,
  24.          SYS_CONTEXT('USERENV''IP_ADDRESS'),
  25.          SYS_CONTEXT('USERENV''TERMINAL'));
  26.        EXCEPTION
  27.           WHEN   OTHERS   THEN
  28.             null;
  29.        END;
  30.   END IF;
  31. END ddl_trigger;


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值