【原创】创建DDL触发器捕捉schema所有对象改变的记录

创建记录表
drop table ddl_log_qiang purge;
create table ddl_log_qiang 
(
operation   varchar2(50),                  什么操作
obj_owner   varchar2(50),                  所属用户
object_name varchar2(50),                  操作对象
attempt_dt  date                           发生时间
);
select * from ddl_log_qiang;
SQL> select * from ddl_log_qiang;
OPERATION             OBJ_OWNER             OBJECT_NAME                          ATTEMPT_DT
-------------------------------------------------------------------------- -------------------------------------------------- -----------
DROP                  SINOJFS               TEST1                                2013-6-28 1
CREATE                SINOJFS               TEST1                                2013-6-28 1
ALTER                 SINOJFS               TEST1                                2013-6-28 1
ALTER                 SINOJFS               MV_SINO_PERSON                       2013-6-29 1
ALTER                 SINOJFS               MV_SINO_PERSON_ADDRESS               2013-6-29 1
ALTER                 SINOJFS               MV_SINO_PERSON_EMPLOYMENT            2013-6-29 1
ALTER                 SINOJFS               MV_SINO_PERSON_CERTIFICATION         2013-6-29 1
 

删除DDL触发器
drop trigger tib_ddl_qiang;
创建DDL触发器
create or replace trigger tib_ddl_qiang
before create or drop or alter             在这三个操作之前插入表记录
on schema
declare
oper ddl_log_qiang.operation%type; 
begin
insert into ddl_log_qiang select ora_sysevent,ora_dict_obj_owner,ora_dict_obj_name,sysdate from dual;
end;
/

注:触发器不能调用或者间接调用commit/rollback,触发器中的DML语句会与触发器一起作为一个整体事物,在触发器结束后会自动进行commit。

测试

drop table test1 purge;
create table test1 (x int,y int);
alter table test1 add (z  int); 
select * from ddl_log_qiang;


Leonarding

2013.07.03

北京&summer

分享技术~成就梦想

Blog www.leonarding.com

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

转载于:http://blog.itpub.net/26686207/viewspace-765360/

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值