Pular para o conteúdo
WaitScope Entrar Solicitar acesso (por e-mail) Menu

Rollbacks no trace

O achado ROLLBACK conta as transações que terminaram em rollback: como saber, pelo próprio trace, se houve trabalho desfeito ou só rotina do pool.

Vale para: Traces 10046

Uma transação que termina em rollback desfaz o que fez. Às vezes isso é esperado, como a rotina de um pool de conexões; às vezes revela trabalho perdido depois de um erro. O próprio trace diz qual dos dois casos é.

Sintomas

No Diagnóstico, aparece o achado n rollbacks (ROLLBACK), ou 1 rollback, com o texto Trabalho desfeito também custa tempo; confira se é esperado. e o link Ver resumo. A severidade é baixa, sem percentual do tempo total.

O achado aparece quando o trace tem pelo menos uma linha XCTEND com rlbk=1, que marca o fim de uma transação por rollback. No Resumo, o cartão Comandos distintos mostra, embaixo, quantos commits e rollbacks a sessão fez.

Causa

  • A aplicação desfaz a transação depois de um erro.
  • O pool de conexões ou o framework faz rollback ao devolver a conexão ou ao fim de cada pedido, muitas vezes sem ter alterado nada.
  • Uma rotina simula ou testa uma operação e descarta o resultado.

O custo depende do que a transação alterou: o banco desfaz cada alteração com o undo. Transação que só leu termina sem nada a desfazer, e a linha XCTEND dela traz rd_only=1.

Resolução

  1. Compare commits e rollbacks no Resumo.
  2. Conte no trace os rollbacks de transação que alterou dados (rd_only=0) e os de transação que só leu (rd_only=1):
    grep -c "XCTEND rlbk=1, rd_only=0" arquivo.trc
    grep -c "XCTEND rlbk=1, rd_only=1" arquivo.trc

    Resultado: somados, os dois números dão o total de rollbacks do achado.

  3. Liste as linhas dos rollbacks que desfizeram alterações; o número antes dos dois-pontos é a linha do trace:
    grep -n "XCTEND rlbk=1, rd_only=0" arquivo.trc | head
  4. Leia o trecho do trace antes de cada um. Troque 1000 pela linha do rollback:
    head -n 1000 arquivo.trc | tail -n 40
  5. Se há uma linha ERROR antes do rollback, corrija o erro: veja erros Oracle no trace.
  6. Se não há erro, confirme com quem mantém a aplicação se o rollback faz parte da regra do negócio.

Rollbacks só com rd_only=1 costumam ser rotina do pool ou do framework e custam pouco. Cada um ainda é um pedido ao banco: se as idas e voltas pesam no tempo, veja a sessão esperando a aplicação.

Como confirmar

Depois da correção, gere o trace da mesma operação e compare o número de rollbacks no Resumo e a contagem de rd_only=0 no trace. Quando a causa era um erro, ele também some da seção Erros.

No relatório

Atualizado em 29/10/2026. Relatar erro nesta página