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)- R
ENAME
(renomeação de tabelas, índices, visões, etc.) GRANT
eREVOKE
(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