enq: TX - row lock contention: Espera: sessão bloqueada em um lock de linha mantido por outra transação
OracleO que significa?
Uma sessão está aguardando a liberação de um lock de linha mantido por outra transação. Este é o evento de espera de lock clássico no nível da aplicação.
Por que acontece?
Transações concorrentes tentando atualizar a mesma linha, transações deixadas sem commit por muito tempo, locking amplo causado por foreign keys sem índice, ou concentração em uma chave sequencial (hot block).
Como resolver
Encontre as sessões bloqueadoras e bloqueadas: SELECT * FROM v$session WHERE blocking_session IS NOT NULL; e correlacione com v$lock. Se transações longas forem a causa raiz, revise a estratégia de commit. Indexe as colunas de foreign key. Repense o design (sequence, hash) para hot rows. Encerre a sessão bloqueadora quando necessário.
Mais entradas deste banco
- ORA-01578Oracle data block corrupted (file #, block #)
- ORA-01722Invalid number
- ORA-02049Timeout: distributed transaction waiting for lock
- log file syncEspera: sessão aguardando o LGWR gravar o redo em disco no commit
- db file sequential readEspera: leitura física de bloco único, tipicamente um acesso por índice ou tabela
- db file scattered readEspera: leitura física multibloco, tipicamente um full table scan ou index fast full scan
- buffer busy waitsEspera: contenção por um buffer que já está sendo lido ou modificado por outra sessão