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.
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.
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.
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.
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.
Na sequencia, o conteúdo do arquivo é exibido.
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