ORA-00060: Deadlock detected while waiting for resource
OracleO que significa?
Duas ou mais sessões estão em deadlock, cada uma aguardando um recurso mantido pela outra. O Oracle detecta o ciclo, escolhe uma vítima e faz rollback da instrução dessa sessão.
Por que acontece?
Locks de linha adquiridos em ordens diferentes, as mesmas linhas atualizadas de forma cruzada por transações diferentes, locks de tabela em atualizações da tabela pai causados por foreign keys sem índice, ou DML concorrente em um índice bitmap.
Como resolver
Examine o arquivo de trace do deadlock (grafo) referenciado no alert log para encontrar as instruções SQL e as linhas em conflito. Na aplicação, sempre acesse tabelas/linhas na mesma ordem. Indexe as colunas de foreign key (FKs sem índice são uma causa clássica de deadlock). Mantenha as transações curtas e revise a frequência de commit. Capture a transação em deadlock na aplicação e tente novamente.
Mais entradas deste banco
- ORA-00001Unique constraint violated
- ORA-00054Resource busy and acquire with NOWAIT specified or timeout expired
- ORA-01017Invalid username/password; logon denied
- ORA-01555Snapshot too old: rollback segment number too small
- ORA-01652Unable to extend temp segment by N in tablespace
- ORA-04031Unable to allocate N bytes of shared memory