martes, 9 de julio de 2013

Oracle 12c: DDL Log

El registro de las actividades DDL's ya existia en la base de datos 11g, sin embargo, todas las sentencias eran registradas en el archivo de alerta, en Oracle 12c se tiene la nueva caracteristica de tener todos los registros DDL's en un archivo de log diferente al alert_log, este log mantiene practicamente el mismo formato que el ya conocido archivo de alerta. El uso de este archivo no  viene habilitado por default en la instalación de una base de datos 12c, para habilitarlo se necesita alterar el parametro "ENABLE_DDL_LOGGING" estableciendolo a "TRUE". Para cada sentencia DDL un registro nuevo es creado dentro de dos archivos diferentes:

  • XML DDL Log: Este archivo puede encontrarse en la ruta $ORACLE_BASE/diag/rdbms/<SID>/<SID>/log/ddl/log.xml
  • Text DDL Log: Este archivo puede encontrarse en la ruta $ORACLE_BASE/diag/rdbms/<SID>/<SID>/log/ddl_orcl.log

Nota: Es importante señalar que los registros DDL's no contiene el usuario que realizó el DDL, es decir, el DDL no registra qué usuario realizó qué DDL.

Las sentencias DDL que pueden ser registradas son:

ALTER/CREATE/DROP/TRUNCATE CLUSTER
ALTER/CREATE/DROP FUNCTION
ALTER/CREATE/DROP INDEX
ALTER/CREATE/DROP OUTLINE
ALTER/CREATE/DROP PACKAGE
ALTER/CREATE/DROP PACKAGE BODY
ALTER/CREATE/DROP PROCEDURE
ALTER/CREATE/DROP PROFILE
ALTER/CREATE/DROP SEQUENCE
CREATE/DROP SYNONYM
ALTER/CREATE/DROP/RENAME/TRUNCATE TABLE
ALTER/CREATE/DROP TRIGGER
ALTER/CREATE/DROP TYPE
ALTER/CREATE/DROP TYPE BODY
DROP USER
ALTER/CREATE/DROP VIEW

Habilitando DDL Log:

SQL> alter system set enable_ddl_logging=true scope=both;

System altered.

Realizando una prueba sencilla:

SQL> create table dgomez (a int);

Table created.

SQL> drop table dgomez;

Table dropped.

Consultando resultados:

[oracle@orcl12c log]$ pwd
/u01/app/oracle/diag/rdbms/orcl/orcl/log
[oracle@orcl12c log]$ ls -ltr
drwxr-x--- 2 oracle asmadmin 4096 Jun 29 12:40 debug
drwxr-x--- 2 oracle asmadmin 4096 Jun 29 12:40 test
drwxr-x--- 2 oracle asmadmin 4096 Jul  9 17:10 ddl
-rw-r----- 1 oracle asmadmin  367 Jul  9 17:16 ddl_orcl.log

[oracle@orcl12c log]$ cat ddl_orcl.log
Tue Jul 09 17:16:06 2013
diag_adl:create table dgomez (a int)
diag_adl:drop table dgomez

[oracle@orcl12c ddl]$ pwd
/u01/app/oracle/diag/rdbms/orcl/orcl/log/ddl
[oracle@orcl12c ddl]$ ls -ltr 
-rw-r----- 1 oracle asmadmin 2530 Jul  9 17:16 log.xml
[oracle@orcl12c ddl]$ cat log.xml
<msg time='2013-07-09T17:16:06.271-06:00' org_id='oracle' comp_id='rdbms'
 msg_id='opiexe:4181:2946163730' type='UNKNOWN' group='diag_adl'
 level='16' host_id='orcl12c.datum.com.gt' host_addr='192.168.56.2'>
 <txt>create table dgomez (a int)
 </txt>
</msg>
<msg time='2013-07-09T17:16:14.369-06:00' org_id='oracle' comp_id='rdbms'
 msg_id='opiexe:4181:2946163730' type='UNKNOWN' group='diag_adl'
 level='16' host_id='orcl12c.datum.com.gt' host_addr='192.168.56.2'>
 <txt>drop table dgomez
 </txt>
</msg>

Aunque la Documentación no indique que las sentencias "ALTER DATABASE" son registradas, sí son realizadas:




No hay comentarios:

Publicar un comentario

Oracle ACE Director Award - Deiby Gómez

Thanks #OracleACE Program for this awesome certificate recognizing the work I have done in the community for the last year. Looking forwa...