AUDITORIA NO SISTEMA
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?
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?
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
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
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
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
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.
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.
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.
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.
Boa tarde Alex!!!
Qual o banco de dados pretente usar?
Qual o banco de dados pretente usar?
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.
Claro, um ou o outro.
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.
Como funciona essa procedure.... é direto no banco ou na minha aplicação que vê os dados e salva na tabela
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!
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!
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.
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