Detectar operações em lote

Dúvidas, dicas e truques de PL/SQL. Aqui também vão assuntos relacionados a pacotes, triggers, funções, Java-Stored Procedures, etc
Responder
dead_thinker
Rank: Estagiário Pleno
Rank: Estagiário Pleno
Mensagens: 3
Registrado em: Qua, 15 Jun 2011 1:01 pm
Localização: Fortaleza - CE

Olá.

Gostaria de saber se alguém conhece alguma forma de detectar operações el lote, massa.

Inserts, updates ou deletes em massa (vários registros ou vários comandos).

Estou encarregado de implementar uma espécie de log/auditoria das tabelas de um sistema, e estou verificando a viabilidade de fazê-lo via banco (triggers/plqsl).

Grato.
diegolenhardt
Moderador
Moderador
Mensagens: 1177
Registrado em: Qui, 15 Out 2009 10:28 am
Localização: Recife

veja se te ajuda
dbms_transaction
tem TRANSACTION_ID, unica para toda a transação, nesse caso você pode gravar ela, e depois fazer um count(*) group by transaction_id
dead_thinker
Rank: Estagiário Pleno
Rank: Estagiário Pleno
Mensagens: 3
Registrado em: Qua, 15 Jun 2011 1:01 pm
Localização: Fortaleza - CE

Hum, obrigado Diego, isso resolveria para os casos de operação em lote com transação né?

Acho que para os casos de transação em lote (vários inserts, sem transação, importação por exemplo), não teria como detectar via banco, confere?


Obrigado, já ajudou muito.
ederphil
Rank: Programador Sênior
Rank: Programador Sênior
Mensagens: 52
Registrado em: Qua, 15 Out 2008 4:05 pm
Localização: taquara-RS

Opa!

não sei se entendi bem, mas você precisa ver o que está sendo executado no banco?

da uma olhada nas v$sql...
dead_thinker
Rank: Estagiário Pleno
Rank: Estagiário Pleno
Mensagens: 3
Registrado em: Qua, 15 Jun 2011 1:01 pm
Localização: Fortaleza - CE

Na auditoria/log desejada pelo cliente, ele quer ser informado quando uma operação (insert/delete/update) foi feita em batch, tipo, a partir de uma importação no sistema, e não necessariamente essas importações estão envolvidas em transação, por isso não tenho como garantir que aquele registro foi operado numa ação de batch só via transação, pois pode estar fora dela.
diegolenhardt
Moderador
Moderador
Mensagens: 1177
Registrado em: Qui, 15 Out 2009 10:28 am
Localização: Recife

Quando seus batchs estao rodando talvez eles te indiquem algo diferente na v$session que você possa identifica-los,

se você por uma trigger nas tabelas, independente de ser batch ou não, sempre vai gerar um ID_TRANSACTION.


~São muitos processos em batch? talvez pode adaptar na rotina pra gerar um log, mais completo até , gravando que parametros que foram informados, quando comecou, quando acabou etc..
Responder
  • Informação
  • Quem está online

    Usuários navegando neste fórum: Nenhum usuário registrado e 5 visitantes