Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1428214
  • 博文数量: 556
  • 博客积分: 12626
  • 博客等级: 上将
  • 技术积分: 5799
  • 用 户 组: 普通用户
  • 注册时间: 2006-01-11 15:56
个人简介

从事IT基础架构多年,发现自己原来更合适去当老师……喜欢关注新鲜事物,不仅限于IT领域。

文章分类

全部博文(556)

文章存档

2019年(6)

2018年(15)

2017年(17)

2016年(11)

2015年(2)

2014年(2)

2013年(36)

2012年(54)

2011年(100)

2010年(41)

2009年(72)

2008年(14)

2007年(82)

2006年(104)

分类: Oracle

2006-02-15 17:02:30


CREATE OR REPLACE TRIGGER tr_trace_ddl
AFTER DDL ON DATABASE
DECLARE
sql_text ora_name_list_t;
state_sql ddl$trace.ddl_sql%TYPE;
BEGIN
FOR i IN 1..ora_sql_txt(sql_text) LOOP
state_sql := state_sql||sql_text(i);
END LOOP;
INSERT INTO ddl$trace(login_user,ddl_time,ip_address,audsid,
schema_user,schema_object,ddl_sql)
VALUES(ora_login_user,SYSDATE,userenv('SESSIONID'),
sys_context('USERENV','IP_ADDRESS'),
ora_dict_obj_owner,ora_dict_obj_name,state_sql);
EXCEPTION
WHEN OTHERS THEN
null;
END tr_trace_ddl;
在创建以上触发器时要注意几点
必须创建一个ddl$trace的表,用来记录ddl的记录

CREATE TABLE SYS.DDL$TRACE  

(  
 LOGIN_USER     VARCHAR2(50 BYTE),  
DDL_TIME       DATE,  
IP_ADDRESS     VARCHAR2(50 BYTE),  
AUDSID         VARCHAR2(50 BYTE),  

SCHEMA_USER    VARCHAR2(20 BYTE),  

SCHEMA_OBJECT  VARCHAR2(50 BYTE),  
DDL_SQL        VARCHAR2(4000 BYTE)  
);  
阅读(1221) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~