如果要审计数据库中的DDL操作,那么可以通过DDL触发器来实现,本节介绍一个例子,把数据库中的所有DDL操作都记录下来。本例子可以在Oracle 8i或更高的版本中使用。第一步,创建表空间和相关的日志表:create tablespace statlog datafile "/oradata/statlog.dbf" size 200m;
create table stat$log_ddl(ddl_date date,user_name varchar2(30),ip_addr VARCHAR2(30),obj_name VARCHAR2(50),ddl_type VARCHAR2(30),object_type VARCHAR2(18),owner VARCHAR2(30),SQL_TEXT VARCHAR2(1000)) TABLESPACE STATLOG;第二步,创建数据库级的DDL触发器,把所有的DDL操作都记录下来
CREATE OR REPLACE TRIGGER DDL_audit AFTER CREATE OR ALTER OR DROP OR TRUNCATE ORGRANT OR REVOKE OR RENAMEon DATABASEdeclareipaddr varchar2(20);STEXT VARCHAR2(1000);BEGINbeginselect sys_context("USERENV", "IP_ADDRESS") into ipaddr FROM dual;exception when others thenipaddr:="-";end;beginselect SQL_TEXT INTO STEXT FROM v$open_cursor WHERE UPPER(sql_text) LIKE "ALTER%";exception when others thenSTEXT:="-";end;insert into sys.stat$log_DDL values(sysdate,user,nvl (ipaddr,"-"),NVL(ora_dict_obj_name,"-"),NVL(ORA_SYSEVENT,"-"),NVL(ora_dict_obj_type,"-"),NVL(ora_dict_obj_owner,"-"),STEXT);exception when others thennull;end;/ORA-02030解决办法Oracle使用系统级触发器禁用DDL语句相关资讯 Oracle教程 Oracle ddl语句 Oracle ddl触发器 Oracle语句触发器
- Oracle中纯数字的varchar2类型和 (07/29/2015 07:20:43)
- Oracle教程:Oracle中查看DBLink密 (07/29/2015 07:16:55)
- [Oracle] SQL*Loader 详细使用教程 (08/11/2013 21:30:36)
| - Oracle教程:Oracle中kill死锁进程 (07/29/2015 07:18:28)
- Oracle教程:ORA-25153 临时表空间 (07/29/2015 07:13:37)
- Oracle教程之管理安全和资源 (04/08/2013 11:39:32)
|
本文评论 查看全部评论 (0)