12c enable_ddl_logging.

No Oracle 12c uma das novas funcionalidades implementadas é a habilidade do banco de dados em monitorar e registrar em um arquivo de log (log.xml) todo e qualquer comando do tipo DDL (Data Definition Language), essa funcionalidade, por padrão vem desabilitada, porém você pode habilitá-la, através do parâmetro ENABLE_DDL_LOGGIN do spfile, para isso basta executar um simples ALTER SYSTEM trocando o valor para TRUE ou FALSE. Abaixo um exemplo:

Primeiramente vejamos se essa característica já se encontra habilitada no seu banco de dados. Para isso execute o comando “SHO PARAMETER” conforme a imagem.

01_sho_parameter


No nosso caso está com a opção default, ou seja desabilitado, para progredir vamos habilitar a funcionalidade com o comando “ALTER SYSTEM” vide imagem.

02_alter_system_true

Agora está pronto! De agora em diante todos os seus comandos DDL serão registrados em um arquivo de log chamado log.xml. Para testar tal funcionalidade, vamos fazer alguns comandos, usaremos um CREATE, um ALTER, um INSERT e um DROP. Depois veremos os resultados produzidos no arquivo de log.

03_transactions

Após executar alguns comandos, podemos consultar o arquivo de log, porém onde ele fica? Sua localização padrão é $ADR_HOME/ddl/log. Mas onde fica meu $ADR_HOME? Para responder essa pergunta, basta executar um select em uma view chamada V$DIAG_INFO, nela você encontra todas as informações inerentes a arquivos de log e trace de seu banco de dados.

04_diag_info

De acordo com o SELECT acima, podemos identificar que nossa $ADR_HOME se encontra em “/u01/app/oracle/diag/rdbms/orcl/orcl”, neste caso então dentro deste caminho ainda teremos as pastas “ddl/log” e então o arquivo log.xml. Para visualizarmos o arquivo, podemos usar qualquer editor de texto (no meu caso usei o “vim”) para ver o resultado.

05_commando

Na sequencia, o conteúdo do arquivo é exibido.

06_view_file

Repare, o comando INSERT não apareceu, isso porque a funcionalidade é monitorar apenas DDLs e não DMLs. Na minha opinião essa funcionalidade ficou muito boa, talvez não para ficar o tempo todo habilitada, pois pode gerar muito log e te dar problemas de 100% de utilização em disco, mas para processos pontuais, como por exemplo uma migração de determinada aplicação, isso seria viável, pois você teria o registro de todos os DDLs que foram executados.

É isso aí, espero ter ajudado, forte abraço e até a próxima!

Douglas Paiva de Sousa

Deixe um comentário