ITPub博客

首页 > Linux操作系统 > Linux操作系统 > ORACLE 用户级数据表结构监测

ORACLE 用户级数据表结构监测

原创 Linux操作系统 作者:flg_inwind 时间:2008-12-29 17:04:40 0 删除 编辑
因为工作需要监测哪些用户修改了数据库中的数据表。在参考了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;

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/8106506/viewspace-524589/,如需转载,请注明出处,否则将追究法律责任。

上一篇: 没有了~
下一篇: CSDN上的脚印
请登录后发表评论 登录
全部评论

注册时间:2008-12-29

  • 博文量
    11
  • 访问量
    25438