Para mostrar que funciona, segue um exemplo *** simples *** - por favor nÃO O 
USE como uma solução completa !!!! - xerocado do link que eu te passei :

=> crio uma tabela para manter a info customizada :

SYS:AS SYSDBA@XE:SQL>create table HR.AUDIT_DDL
(RUN_DATE  date,
  osuser       varchar2(33),
  current_user varchar2(33),
  login_user   varchar2(33),
  host         varchar2(33),
  terminal     varchar2(33),
  owner        varchar2(33),
  OBJECT_TYPE  varchar2(33),
  object_name  varchar2(33),
  sysevent     clob,
  PROGRAM      varchar2(33),
  MACHINE      varchar2(33)
  );
 
==> dou as permissões :
 
SYS:AS SYSDBA@XE:SQL>grant select on v_$open_cursor to HR;

ConcessÒo bem-sucedida.

SYS:AS SYSDBA@XE:SQL>grant select on v_$sql to hr;

ConcessÒo bem-sucedida.

SYS:AS SYSDBA@XE:SQL>grant select on v_$SESSION to HR;

ConcessÒo bem-sucedida.

==> crio a trigger , no caso conectado como o HR :

HR:@XE:SQL> create or replace trigger HR.TRG_AUDIT_DDL before ddl on schema
  2  declare
  3  v_count varchar2(200);
  4  l_sysevent varchar2(25);
  5  v_program varchar2(25);
  6  v_machine varchar2(25);
  7  BEGIN
  8     --select count(*) into v_count from important_objects where object_name=
ora_dict_obj_name;
  9     --  if (v_count>0)
 10     --  then
 11     select program,machine  into v_program,v_machine from v$session where au
dsid = sys_context( 'userenv', 'sessionid' );
 12     select ora_sysevent into l_sysevent from dual;
 13     if  ( l_sysevent = 'ALTER' )   then
 14        insert into HR.AUDIT_DDL(RUN_DATE, osuser,current_user,login_user,hos
t,terminal,owner,OBJECT_TYPE,object_name,sysevent,PROGRAM,MACHINE)
 15           select sysdate,
 16           sys_context('USERENV','OS_USER') ,
 17           sys_context('USERENV','CURRENT_USER') ,
 18           ora_login_user,
 19           sys_context('USERENV','HOST') ,
 20           sys_context('USERENV','TERMINAL') ,
 21           ora_dict_obj_owner,
 22           ora_dict_obj_type,
 23           ora_dict_obj_name, B.sql_fulltext,v_program,v_machine
 24                  from v$open_cursor A,V$SQL b
 25                 where upper(A.sql_text) like 'ALTER%'
 26                 and regexp_like(A.sql_text,ora_dict_obj_name,'i')
 27                 AND A.SQL_ID=B.SQL_ID
 28                 --and last_sql_active_time>sysdate - 15/1440
 29                 ;
 30     else
 31        insert into HR.AUDIT_DDL(RUN_DATE, osuser,current_user,login_user,hos
t,terminal,owner,OBJECT_TYPE,object_name,sysevent,PROGRAM,MACHINE)
 32            values(
 33               sysdate,
 34               sys_context('USERENV','OS_USER') ,
 35               sys_context('USERENV','CURRENT_USER') ,
 36               ora_login_user,
 37               sys_context('USERENV','HOST') ,
 38               sys_context('USERENV','TERMINAL') ,
 39               ora_dict_obj_owner,
 40               ora_dict_obj_type,
 41               ora_dict_obj_name,
 42               ora_sysevent,v_program,v_machine
 43                  );
 44     end if;
 45* END;
HR:@XE:SQL>/

Gatilho criado.

==> okdoc, vou fazer uns DDLs e DCLs :

HR:@XE:SQL>grant select on regions to system;

ConcessÒo bem-sucedida.

HR:@XE:SQL>create table TT(x date);

Tabela criada.

HR:@XE:SQL>desc countries
 Nome                                                                      Nulo?
    Tipo
 ------------------------------------------------------------------------- -----
--- -------------------------------------------------
 COUNTRY_ID                                                                NOT N
ULL CHAR(2)
 COUNTRY_NAME
    VARCHAR2(40)
 REGION_ID
    NUMBER


HR:@XE:SQL>alter table TT add z varchar2(10);

Tabela alterada.

HR:@XE:SQL>select * from audit_ddl;

RUN_DATE OSUSER                            CURRENT_USER                      LOG
IN_USER                        HOST
-------- --------------------------------- --------------------------------- ---
------------------------------ ------------
TERMINAL                          OWNER            OBJECT_TYPE
     OBJECT_NAME
--------------------------------- ---------------- -----------------------------
---- ------------------------------
SYSEVENT
 PROGRAM
--------------------------------------------------------------------------------
 ---------------------------------
MACHINE
---------------------------------
15/03/16 ITLJLC_XYZ\jose_chiappa           HR                                HR
                               ITLJLC_XYZ\B

                               RZBEL177L
BRZBEL177L                        HR               OBJECT PRIVILEGE
     REGIONS
GRANT
 sqlplus.exe
ITLJLC_XYZ\BRZBEL177L

15/03/16 ITLJLC_XYZ\jose_chiappa           HR                                HR
                               ITLJLC_XYZ\B

                               RZBEL177L
BRZBEL177L                        HR               TABLE
     TT
CREATE
 sqlplus.exe
ITLJLC_XYZ\BRZBEL177L

15/03/16 ITLJLC_XYZ\jose_chiappa           HR                                HR
                               ITLJLC_XYZ\B

                               RZBEL177L
BRZBEL177L                        HR               TABLE
     TT
alter table TT add z varchar2(10)
 sqlplus.exe
ITLJLC_XYZ\BRZBEL177L


HR:@XE:SQL>

[]s

  Chiappa
  • [oracle_br] Auditor... 'Ednilson Silva' ednilson.si...@jbs.com.br [oracle_br]
    • [oracle_br] Re... jlchia...@yahoo.com.br [oracle_br]
    • [oracle_br] Au... Rafael Mendonca raffaell.t...@yahoo.com [oracle_br]
      • Re: [oracl... César Carvalho cesar.sys...@gmail.com [oracle_br]
        • Re: [o... Paulo Jr paulobarbosa....@gmail.com [oracle_br]
          • Re... Paulo Jr paulobarbosa....@gmail.com [oracle_br]
            • ... jlchia...@yahoo.com.br [oracle_br]
      • [oracle_br... jlchia...@yahoo.com.br [oracle_br]
        • [oracl... jlchia...@yahoo.com.br [oracle_br]

Responder a