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