Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2101418
  • 博文数量: 195
  • 博客积分: 4378
  • 博客等级: 上校
  • 技术积分: 4046
  • 用 户 组: 普通用户
  • 注册时间: 2007-09-09 11:37
个人简介

白天和黑夜只交替没交换无法想像对方的世界

文章分类

全部博文(195)

文章存档

2014年(3)

2013年(20)

2012年(18)

2011年(107)

2010年(17)

2009年(5)

2008年(20)

2007年(5)

分类: Oracle

2012-10-26 00:31:05

 
Oracle11g安全审计--重要帐号的DDL语句操作记录
 
 
如果要审计数据库中的DDL操作,那么可以通过DDL触发器来实现,把数据库中的所有DDL操作都记录下来。本例子可以在oracle 9i或更高的版本中使用。
 
第一步,创建表空间和相关的日志表:
 

点击(此处)折叠或打开

  1. create tablespace stat_log
  2. LOGGING
  3. datafile
  4. '/apps/oracle/oradata/statlog.dbf' size 2048m AUTOEXTEND ON NEXT 128M MAXSIZE 8G
  5. EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO;
  6. create table stat$log_ddl
  7. (
  8. ddl_date date,
  9. user_name varchar2(30),
  10. ip_addr VARCHAR2(30),
  11. obj_name VARCHAR2(50),
  12. ddl_type VARCHAR2(30),
  13. object_type VARCHAR2(18),
  14. owner VARCHAR2(30),
  15. SQL_TEXT VARCHAR2(1000)
  16. ) TABLESPACE STA_TLOG;

 
第二步,创建数据库级的DDL触发器,把所有的DDL操作都记录下来

点击(此处)折叠或打开

  1. CREATE OR REPLACE TRIGGER DDL_audit AFTER CREATE OR ALTER OR DROP OR TRUNCATE OR
  2. GRANT OR REVOKE OR RENAME
  3. on DATABASE
  4. declare
  5. ipaddr varchar2(20);
  6. STEXT VARCHAR2(1000);
  7. BEGIN
  8. begin
  9. select sys_context('USERENV', 'IP_ADDRESS') into ipaddr FROM dual;
  10. exception when others then
  11. ipaddr:='-';
  12. end;
  13. begin
  14. select SQL_TEXT INTO STEXT FROM v$open_cursor WHERE UPPER(sql_text) LIKE 'ALTER%';
  15. exception when others then
  16. STEXT:='-';
  17. end;
  18. insert into sys.stat$log_DDL values
  19. (sysdate,
  20. user,
  21. nvl (ipaddr,'-'),
  22. NVL(ora_dict_obj_name,'-'),
  23. NVL(ORA_SYSEVENT,'-'),
  24. NVL(ora_dict_obj_type,'-'),
  25. NVL(ora_dict_obj_owner,'-'),
  26. STEXT
  27. );
  28. exception when others then
  29. null;
  30. END;
  31. /


审计记录效果如下:

点击(此处)折叠或打开

  1. SQL> select ddl_date,user_name,ip_addr,obj_name,ddl_type,sql_text from stat$log_ddl;
  2. DDL_DATE USER_NAME IP_ADDR OBJ_NAME DDL_TYPE SQL_TEXT
  3. ------------------- ---------- -------------------- ---------- ---------- --------------------------------------------------
  4. 2012-10-25 23:31:40 DBA_USER - T1 CREATE -
  5. 2012-10-25 23:32:32 DBA_USER - N_TEST DROP -
  6. 2012-10-25 23:36:04 DBA_USER 172.18.130.114 T1 DROP -
  7. 2012-10-25 23:42:49 DBA_USER 172.18.130.114 TEST ALTER alter table test drop(name)
  8. 2012-10-25 23:43:08 DBA_USER 172.18.130.114 TEST ALTER alter table test add(name varchar2(20))
  9. 2012-10-25 23:44:10 DBA_USER 172.18.130.114 TEST ALTER alter table test rename to test01
  10. 2012-10-25 23:44:44 DBA_USER 172.18.130.114 TEST01 RENAME -
  11. 2012-10-25 23:51:31 DBA_USER 172.18.130.114 TEST ALTER alter table test add(addr varchar2(10))
  12. 2012-10-25 23:52:12 DBA_USER 172.18.130.114 TEST ALTER alter table test rename column addr to ipaddr
  13. 2012-10-26 00:22:10 DBA_USER 172.18.130.114 BYTE_TEST TRUNCATE -

阅读(7920) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~