Foto de Roberto Sobrinho
Roberto Sobrinho

09/06/2024

Auditoria de Comandos DDL no Oracle: Ativando DDL LOGGING

Hoje abordarei um recurso poderoso do Oracle Database: o DDL LOGGING. Este recurso permite registrar operações de Data Definition Language (DDL), como CREATE, ALTER, DROP, etc, em arquivos de log, ajudando a monitorar e auditar mudanças na estrutura do banco de dados.

O que é DDL LOGGING?

DDL LOGGING é uma funcionalidade que registra operações DDL no Oracle Database. Isso é útil para auditoria e recuperação de mudanças não intencionais. Com o DDL LOGGING habilitado, o Oracle escreve detalhes dessas operações em arquivos de log.

Habilitando o DDL LOGGING

1 . Verificar o Estado Atual do DDL LOGGING:

      sys@XE > SHOW PARAMETER ENABLE_DDL_LOGGING;
      
      
      NAME                                 TYPE        VALUE
      ------------------------------------ ----------- ------------------------------
      enable_ddl_logging                   boolean     FALSE

      2 . Habilitar o DDL LOGGING:

      sys@XE > ALTER SYSTEM SET ENABLE_DDL_LOGGING = TRUE SCOPE=BOTH SID='*';
      
      System altered.

      3 . Localizar o arquivo de log de DDL:

      Em versões diferentes do Oracle, a localização do log pode variar.

      Oracle 11g: Os comandos DDL são escritos no arquivo ALERT do banco localizado em:

      $ORACLE_BASE/diag/rdbms/${DBNAME}/${ORACLE_SID}/trace/alert_${ORACLE_SID}.log
      

      Oracle 12c e superior: Os comandos DDL são escritos em um arquivo de log dedicado:

      $ORACLE_BASE/diag/rdbms/${ORACLE_SID}/log/ddl_${ORACLE_SID}.log
      

      Exemplo de Operações DDL

      Após habilitar o DDL LOGGING, execute algumas operações DDL para testar e verifique o conteúdo do arquivo de log.

      sys@XE > CREATE TABLE HR.TABELA_CHAVES (ID NUMBER);
      
      Table created.
      
      sys@XE > CREATE INDEX HR.IDX_NOME ON HR.TABELA_CHAVES (ID);
      
      Index created.
      
      sys@XE > ALTER TABLE HR.TABELA_CHAVES ADD (NOME VARCHAR2(100));
      
      Table altered.
      
      sys@XE > TRUNCATE TABLE HR.TABELA_CHAVES;
      
      Table truncated.
      
      sys@XE > DROP TABLE HR.TABELA_CHAVES;
      
      Table dropped.
      

      Verificação do Log

      Ao executar as operações DDL, os logs são escritos no arquivo de log:

      [oracle@ ~]$ tail $ORACLE_BASE/diag/rdbms/${DBNAME}/${ORACLE_SID}/trace/alert_${ORACLE_SID}.log
      Sun Jun 09 19:05:23 2024
      ALTER SYSTEM SET enable_ddl_logging=TRUE SCOPE=BOTH SID='*';
      Sun Jun 09 19:14:35 2024
      CREATE TABLE HR.TABELA_CHAVES (ID NUMBER)
      CREATE INDEX HR.IDX_NOME ON HR.TABELA_CHAVES (ID)
      ALTER TABLE HR.TABELA_CHAVES ADD (NOME VARCHAR2(100))
      TRUNCATE TABLE HR.TABELA_CHAVES
      DROP TABLE HR.TABELA_CHAVES

      🥎🥎🥎 #BóBó 🥎🥎🥎

      Esses registros mostram a data, hora e a operação DDL executada, mas não identificam diretamente o usuário que executou o comando. Para identificar o usuário, você pode correlacionar os registros de DDL LOGGING com os logs de auditoria (AUDIT) do Oracle.

      Tipos de Comandos Auditados

      Os tipos de comandos DDL que são auditados incluem:

      • CREATE (criação de tabelas, índices, visões, etc.)
      • ALTER (modificação de tabelas, índices, visões, etc.)
      • DROP (remoção de tabelas, índices, visões, etc.)
      • TRUNCATE (remoção de todos os registros de uma tabela)
      • COMMENT (adição ou modificação de comentários em tabelas ou colunas)
      • RENAME (renomeação de tabelas, índices, visões, etc.)
      • GRANT e REVOKE (concessão e revogação de privilégios)

      🚨⚠ Atenção ao Licenciamento ⚠🚨

      Licenciamento Oracle Database Lifecycle Management Pack for Oracle Database

      ENABLE_DDL_LOGGING é licenciado como parte do Database Lifecycle Management Pack quando configurado como TRUE. 💰💸💰💸

      Conclusão

      Habilitar o DDL LOGGING é uma prática recomendada para monitorar e auditar alterações na estrutura do banco de dados. Com essa funcionalidade, você pode rastrear e analisar operações DDL, garantindo maior segurança e controle no seu ambiente.

      Para mais informações, consulte as documentações oficiais disponibilizadas pelo fabricante:

      Espero que este post ajude a entender e implementar o DDL LOGGING no seu ambiente.

      🚀🚀🚀 #OracleDatabase #DBA #Auditoria #GuinaNãoTinhaDó #CaceteDeAgulha #NinguémTemPaciênciaComigo #OPipocaAbraço #AvidaÉLoka

      Compartilhe

      Facebook
      Twitter
      LinkedIn
      WhatsApp
      Email
      Print

      Auditoria de Comandos DDL no Oracle: Ativando DDL LOGGING