Oracle 数据库级DDL触发器

Oracle 数据库级DDL触发器,oracle,plsql,ddl,database-trigger,Oracle,Plsql,Ddl,Database Trigger,我创建了DB级别的触发器来审核DDL操作,但是它只在oracle 12c中触发,而在oracle 11g中不触发。即使将参数“enable_ddl_logging”的值更改为TRUE,也不会触发它。有人能告诉我,为什么它不能在Oracle 11g中工作 以下是DDL触发器: create or replace trigger audit_ddl_trg after ddl on database begin insert into schema.audit_ddl(ddl_date,

我创建了DB级别的触发器来审核DDL操作,但是它只在oracle 12c中触发,而在oracle 11g中不触发。即使将参数“enable_ddl_logging”的值更改为TRUE,也不会触发它。有人能告诉我,为什么它不能在Oracle 11g中工作

以下是DDL触发器:

create or replace trigger audit_ddl_trg after ddl on database 
begin
    insert into schema.audit_ddl(ddl_date, osuser,current_user,host,terminal,owner,type,name,sysevent)
    values(
      sysdate,
      sys_context('USERENV','OS_USER') ,
      sys_context('USERENV','CURRENT_USER') ,
      sys_context('USERENV','HOST') ,
      sys_context('USERENV','TERMINAL') ,
      ora_dict_obj_owner,
      ora_dict_obj_type,
      ora_dict_obj_name,
      ora_sysevent
    );
    exception when others then 
    raise;
 end;
/
谢谢,
毗湿奴

你为什么要重新发明轮子?为什么不使用oracle已经建立的审计功能呢?@EdStevens,也请共享文档链接。@AnkitBajpai-对不起,我想我希望OP能够谷歌“oracle审计”之类的功能。有多个参考点,但两个起点是《2天+安全指南》()和《数据库安全指南》中的相关章节。()@EdStevens,如果我想使用内置功能,我必须完全依赖DBA,所以为了避免DBA的干预,我创建了触发器。添加“pragma autonomy transaction”后,将触发它,但低于值的值为NULL。ora_dict_obj_所有者、ora_dict_obj_类型、ora_dict_obj_名称、ora_sysevent,您知道为什么上述4个值在11g中为空吗?你能告诉我另一种选择吗?谢谢,毗瑟奴在我作为DBA的位置上,我欢迎一位开发人员要求我帮助使用内置功能,而不是他写关于次优解决方案的文章,该解决方案的性能不好,可能会导致额外的操作问题。你为什么要重新发明轮子?为什么不使用oracle已经建立的审计功能呢?@EdStevens,也请共享文档链接。@AnkitBajpai-对不起,我想我希望OP能够谷歌“oracle审计”之类的功能。有多个参考点,但两个起点是《2天+安全指南》()和《数据库安全指南》中的相关章节。()@EdStevens,如果我想使用内置功能,我必须完全依赖DBA,所以为了避免DBA的干预,我创建了触发器。添加“pragma autonomy transaction”后,将触发它,但低于值的值为NULL。ora_dict_obj_所有者、ora_dict_obj_类型、ora_dict_obj_名称、ora_sysevent,您知道为什么上述4个值在11g中为空吗?你能告诉我另一种选择吗?谢谢,VishnuIn我作为DBA的职位,我欢迎一位开发人员要求我帮助使用内置功能,而不是他写他的次优解决方案,该解决方案性能不好,可能会导致额外的操作问题。