DBAtlas · Atlas de operaciones de bases de datos

ORA-00060: Deadlock detected while waiting for resource (deadlock detectado al esperar un recurso)

Oracle

¿Qué significa?

Dos o más sesiones están en deadlock, cada una esperando un recurso que mantiene la otra. Oracle detecta el ciclo, elige una víctima y revierte la sentencia de esa sesión.

¿Por qué ocurre?

Bloqueos de fila adquiridos en distinto orden, las mismas filas actualizadas de forma cruzada por transacciones diferentes, bloqueos de tabla en actualizaciones de la tabla padre causados por claves foráneas sin índice, o DML concurrente sobre un índice bitmap.

Cómo solucionarlo

Examine el archivo de traza (grafo) del deadlock referenciado en el alert log para encontrar las sentencias SQL y filas en conflicto. En la aplicación, acceda siempre a tablas/filas en el mismo orden. Indexe las columnas de claves foráneas (las FK sin índice son una causa clásica de deadlock). Mantenga las transacciones cortas y revise la frecuencia de commit. Capture la transacción en deadlock en la aplicación y reinténtela.

Abrir en DBAtlas →

Más entradas de este motor