Auditoria simples ( AUDIT_TRAIL )

Olá.

Certamente todos, algum dia, tivemos a curiosidade de saber o que os pobres mortais usuários fazem em nosso banco de dados.
Aqui vou mostrar uma maneira bem simples de como monitorar ações específicas em objetos do banco de dados.

Primeiro vamos ver como está nosso banco, para isso vamos verificar as variáveis de inicialização:

SELECT 'SP-PARAM', NAME, VALUE
FROM v$spparameter parametros_sp
WHERE UPPER(NAME) LIKE '%AUDIT%'
UNION
SELECT 'PARAM', NAME, VALUE
FROM v$parameter parametros
WHERE UPPER(NAME) LIKE '%AUDIT%'

Voce visualizará algo parecido com isso:

‘SP-PARAM’ NAME VALUE
PARAM audit_file_dest /u01/app/dartanghan/admin/orcl/adump
PARAM audit_sys_operations FALSE
PARAM audit_syslog_level
PARAM audit_trail DB
SP-PARAM audit_file_dest /u01/app/dartanghan/admin/orcl/adump
SP-PARAM audit_sys_operations FALSE
SP-PARAM audit_syslog_level
SP-PARAM audit_trail db

Explicando os caras importantes:

audit_trail: Mostra aonde os dados de auditoria serão gravados ( DB | NONE | OS )
audit_sys_operations: Indica se as ações do sys serão logadas. ( padrão false )

Isto serve apenas para visualizarmos que os logs de auditoria serão gravados em banco.

——–

Agora vamos finalmente auditar nossos itens!

Primeiro vamos criar algo inovador, diferente…. UMA TABELA!

CREATE TABLE minha_tabelona(
  PK NUMBER (5) PRIMARY KEY
);

Feito isso vamos começar a auditar algo nela, que tal INSERTS?

AUDIT INSERT ON minha_tabelona ;

Pronto! Agora já estamos auditando.
Vamos testar para ver se o Dartanghan não está mentindo….

INSERT INTO minha_tabelona VALUES ( 1 );

Agora para visualizar o que ocorreu acesse sua tabela de auditoria:

SELECT *
  FROM USER_AUDIT_TRAIL
 WHERE UPPER( ACTION_NAME ) NOT IN ('LOGOFF', 'LOGON' )
 ORDER BY EXTENDED_TIMESTAMP DESC;

E voce poderá conferir que um registro foi criado para seu insert com todos os dados necessários…

se quiser o SQL da intrução use a super view V$SQL

SELECT *  FROM V$SQL WHERE SQL_TEXT LIKE '%minha_tabelona%';

Concluindo… para usar esta auditoria é bem simples e requer alguns privilégios apenas. Caso queira, pode ser aplicado outro tipo de filtro na auditoria ao invés do INSERT como SELECT, UPDATE ou mesmo um ALL.
Obviamente existem outros parametros de auditoria, estes serão abordados nos futuros posts.

.Dartanghan

Deixe uma resposta