Você que está pensando em implementar controle de auditoria em seu sistema aqui vai uma dica legal, mais eficiente e simples, ao invés de fazer a auditoria pelo código de sua aplicação você faz tudo pelo banco de dados, usando triggers... existem algumas premissas básicas para se usar este tipo de auditoria...
- A aplicação deve ser desktop que roda em um computador em rede e logado em um domínio, os usuários devem sempre se logar no sistema operacional através de seu usuário e senha para que a triggers pegue as informações necessárias do sistema operacional através do Oracle Client.
- A aplicação até pode ser executada via web, mas neste caso para identificar com .NET terá que usar o ODP.net ( Oracle Data Provider ) existe uma propriedade no ODP.net que você identifica o cliente (ClientId) assim a trigger conseguirá pegar o usuário.
Vamos ver como ficaria a trigger no oracle:
CREATE OR REPLACE TRIGGER "NOME_DO_SCHEMA"."NOME_DA_TABELA" BEFORE UPDATED
ON NOME_DO_SCHEMA.NOME_DA_TABELA
FOR EACH ROW
BEGIN
INSERT INTO NOME_DA_TABELA_DE_AUDITORIA
VALUES (
sysdate, -- DATA E HORA DO EVENTO
sys_context('USERENV','OS_USER'), -- NOME DO USUARIO (DESKTOP)
sys_context('USERENV','TERMINAL'), -- NOME DA MAQUINA DO USUARIO (DESKTOP)
sys_context('USERENV','CLIENT_IDENTIFIER'), -- NOME DO USUARIO (ODP.NET - ClientId)
:OLD.NOME_DO_CAMPO_QUE_DESEJA_AUDITAR, -- VALOR ANTIGO
:NEW.NOME_DO_CAMPO_QUE_DESEJA_AUDITAR, -- VALOR NOVO
);
END;
/
O USERENV no Oracle fornece informações sobre a sessão conectada no Oracle, existe uma séria de outros atributos interessantes para se auditar
como:
CURRENT_SQL - SQL Executada.
HOST - Nome da maquina.
IP_ADDRESS - Endereço IP do cliente.
OS_USER - Usuário do sistema operacional.
SERVER_HOST - Nome do servidor rodando a instância oracle.
Etc...
Mais informações em:
http://psoug.org/reference/sys_context.html
Nenhum comentário:
Postar um comentário