AUDITORIA NO SISTEMA

ALEXPASSOS 27/10/2011 09:03:03
#387882
Olá

Estou precisando fazer um controle de auditória no sistema.... exemplo;

Saber qual usuário cadastrou e/ou alterou e/ou excluir
Ou seja, ver tudo o que o usuário fez no sistema.

Alguém tem alguma ideia de como fazer da forma mais prática?
ALTAIR148 27/10/2011 09:23:36
#387885
Bom dia,

Não sei ao certo, mas já ouvi muita gente dizer que faz isso via triggers. Da uma olhada no link abaixo, quem sabe pode lhe ajudar.

http://www.devmedia.com.br/post-9992-Implementando-Logs-de-Auditoria-em-Banco-de-Dados-Oracle.html
ALEXPASSOS 27/10/2011 09:27:36
#387886
Altair..

Eu li a respeito do triggers, nunca utilizei

Posso estar enganado... mais parece que eu não posso usar em todas as tabelas do banco porque pode deixar o lento. E eu preciso verificar todas as tabelas do banco o que foi alterado pelo usuário
ALTAIR148 27/10/2011 10:08:53
#387889
Bom amigo, ai é que tá o problema, para se ter um sistema mais confiável e ter uma maior integridade das informações o ideal é utilizar as triggers. Eu particularmente ainda nunca utilizei, utilizei apenas SP[ô]s, mas me parece não ser muito dificil. Pelas pesquisar que fiz, é até pelo contrário, as Triggers, fazem é facilitar muito o trabalho, abaixo umas das vantagens delas:


1 - Reduzir o tráfego na rede;
2 - Criar regras de negócios adaptadas a aplicação cliente,
3 - Criar rotinas comuns que podem ser utilizadas para toda a empresa, reduzindo o tempo de desenvolvimento e manutenção.
4 - Centralizar o processamento no servidor e reduzir os requisitos de hardware na estação cliente.
5 - Aumentar a performance das aplicações.


Fonte.: Oficina da Net

Até mais.

LUIS.HERRERA 27/10/2011 10:12:38
#387890
Alex, bom dia.
Auditoria de sistema não é uma coisa simples ou [Ô]Leve[Ô] num software, pois dependendo do que você queira monitorar, terá uma [Ô]quase[Ô] duplicidade de trabalho no banco, com isso levará no mínimo 50% a mais de tempo no acesso ao banco para gravar esses dados em cada operação monitorada.

Os bancos, por questão de segurança, fazem muito isso, além de espelhamento, entre outras práticas de segurança.

Você deve analisar muito bem o que realmente precisa, para [Ô]aliviar[Ô] seu sistema ao máximo e só gravar o que realmente for importante.

Além das Triggers, uma outra opção que poderia ficar dentro do seu software, facilitando sua manutenção se não for o DBA, é a cada operação incluir no bloco de gravação dos dados, uma gravação específica na tabela ou tabelas auxiliares de auditoria, contendo:
ID do usuário, Data, Hora, Módulo acessado, ação realizada (0-Inclusão, 1- Edição, 2-Exclusão, etc...), ID do registro. Isso é um exemplo básico dos dados, quando mais complexo for seu sistema, e o que precisa monitorar, tanto mais complexo será essa ação. As vezes se quer saber exatamente que alterações num texto foram feitas, nesse caso de um campo com texto longo, seria preciso gravar o texto inteiro, talvez até o original para saber que mudanças foram feitas. Isso pode comprometer muito o tamanho de um banco, imagina um sistema que sofre alterações constantes em algum tipo de informação, você poderia ter diversos registros de alteração num mesmo registro no mesmo dia, e até pelo mesmo usuário.

Bom senso é fundamental nesse ponto. Você citou até cadastro, nesse caso seria mais interessante ter o nomo do usuário num campo do registro para informar que ele cadastrou e não fazer isso na auditoria, assim reduziria já bastante informação nessa operação, mesmo que o nome do cidadão não fosse exibido no cadastro, mas pudesse ser pesquisado. Isso é otimização e boa análise.

Espero ter ajudado.
ASLOPES 27/10/2011 12:35:02
#387908
Boa tarde Alex!!!

Qual o banco de dados pretente usar?
ALEXPASSOS 27/10/2011 13:20:28
#387911
Estou usando o SQL Server como banco principal......... mais montei uma classe que pode ser usando o MySQL também.

Claro, um ou o outro.
MSMJUDAS 27/10/2011 16:15:40
#387923
Eu utilizo Procedure para fazer auditoria, gravo em uma tabela chamada HISTORICO alguns dados como: id, usuario, ip, data, hora, ação, obervações, valor do campo antigo/novo valor, etc. Uso Oracle e pelo que percebi não causa lentidão alguma, se causa é de alguns milisegundos que nem dá pra perceber.
ALEXPASSOS 27/10/2011 17:01:02
#387931
Como funciona essa procedure.... é direto no banco ou na minha aplicação que vê os dados e salva na tabela
PHOENIX209E 27/10/2011 17:18:18
#387932
ALEXPASSOS,porque na hora de alguma alteração,insersao de valor,voce nao deixa gravado as atividades do usuario?
Depois com alguns selects voce vai puxando muitos tipos de informaçoes,vira um cubo magico,fica mais facil...
auditoria de sistema nao é uma coisa simples!
LLAIA 27/10/2011 19:40:19
#387949
O bom dos triggers é a possibilidade de verificar a versão anterior do registro antes da atualização. Assim, é possível registrar as verdadeiras mudanças que ocorreram no registro ao comparar a versão anterior do registro com os dados novos que estão entrando. O problema é que ficam muitas triggers no banco. Existem bancos que vc pode criar as triggers dinamicamente através de uma stored procedure. Dessa forma vc escreve o código apenas uma vez.

Pra evitar o crescimento exagerado do BD, coloque os dados de auditoria em outro banco de dados.
Tópico encerrado , respostas não são mais permitidas