ORA-00060

Error: ORA-00060: deadlock detected while waiting for resource

Causa: Your session and another session are waiting for a resource locked by the other. This condition is known as a deadlock. To resolve the deadlock, one or more statements were rolled back for the other session to continue work.

Acción: Either:


Deja tu comentario:

¿No sabes cómo solucionar el error? ¿O lo has conseguido resolver y quieres ayudar a otros usuarios?

Nombre:

Asunto:


COMENTARIOS:

por Anónimo | 24/03/2010 08:25:53

RE: ORA-00060

Al parecer es un error de un mal diseño de una aplicación, te anexo el link donde encontré esta respuesta.
http://lhorikian.blogspot.com/2007/09/deadlocks-ora-00060.html
Gracias a Leonardo Horikian por el aporte en su blog.

por David | 15/04/2010 23:58:33

RE: ORA-00060

Copio el contenido del blog de Leonardo:
Qué es un Deadlock? Un Deadlock (abrazo mortal) es cuando 2 o más usuarios están esperando algún dato que está siendo loqueado por alguna sesión. Si ésto sucede, los usuarios involucrados en el Deadlock deben esperar y no pueden continuar con el procesamiento.
Cuando Oracle detecta que se produjo un Deadlock, lo que hace es cortar la ejecución del procedimiento y mostrar el siguiente mensaje de error: ORA-00060: deadlock detected while waiting for resource. Tengamos en cuenta que cuando se produce éste error, Oracle genera un archivo de trace en el directorio UDUMP con información acerca del error.
Generalmente éste problema se produce por un mal diseño de la aplicación. Veamos un ejemplo...
SQL_9iR2> CREATE TABLE sesion_1 AS
2 SELECT level id, 'nom_'||level nombre
3 FROM dual
4 CONNECT BY level CREATE TABLE sesion_2 AS
2 SELECT level id, 'nom_'||level nombre
3 FROM dual
4 CONNECT BY level UPDATE sesion_1
2 SET nombre = 'nom_'||id*2
3 WHERE id = 1 ;
1 row updated.
En la SESION 2 loqueo un registro de la tabla SESION_2 correspondiente al ID 1.
SQL_9iR2> UPDATE sesion_2
2 SET id = id+10
3 WHERE id = 1 ;
1 row updated.
En la SESION 1 modifico un registro de la tabla SESION_2 correspondiente al ID 1. Vemos que esta sesión se 'colgó' debido al loqueo y no nos devuelve el control. Todavía no se produjo el Deadlock... sólo se produjo un loqueo.
SQL_9iR2> UPDATE sesion_2
2 SET id = id+10
3 WHERE id = 1 ;
En la SESION 2 modifico un registro de la tabla SESION_1 correspondiente al ID 1.
Vemos que esta sesión se 'colgó' debido al loqueo y no nos devuelve el control.
SQL_9iR2> UPDATE sesion_1
2 SET nombre = 'nom_'||id*2
3 WHERE id = 1 ;
Esto va a producir un Deadlock y luego de unos segundos aparece un mensaje de error en la SESION 1:
SQL_9iR2> UPDATE sesion_2
2 SET id = id+10
3 WHERE id = 1 ;
UPDATE sesion_2
*
ERROR at line 1:
ORA-00060: deadlock detected while waiting for resource
La SESION 2 sigue colgada esperando que la SESION 1 termine la transacción que comenzó. Entonces en la SESION 1 ejecutamos...
SQL_9iR2> rollback ;
Rollback complete.
En la SESION 2 se libera automáticamente el loqueo...
SQL_9iR2> UPDATE sesion_1
2 SET nombre = 'nom_'||id*2
3 WHERE id = 1 ;
1 row updated.