ORA-00054: Resource busy and acquire with NOWAIT specified or timeout expired (recurso ocupado; NOWAIT especificado o tiempo de espera agotado)
Oracle¿Qué significa?
El recurso (fila o tabla) que se quiere bloquear está bloqueado por otra sesión y no se pudo obtener de inmediato porque se especificó NOWAIT o expiró DDL_LOCK_TIMEOUT.
¿Por qué ocurre?
Normalmente, un DDL (ALTER TABLE, DROP, CREATE INDEX) intentado mientras otra transacción bloquea la tabla; o una fila bloqueada encontrada con SELECT ... FOR UPDATE NOWAIT.
Cómo solucionarlo
Encuentre la sesión que mantiene el bloqueo: SELECT * FROM v$locked_object. Combine v$session y v$lock para identificar la sesión bloqueante. Espere a que termine la transacción o, si es necesario, termínela con ALTER SYSTEM KILL SESSION. Para DDL puede definir un tiempo de espera: ALTER SESSION SET DDL_LOCK_TIMEOUT = 60; Ejecute los DDL en ventanas de mantenimiento con poca actividad.
Más entradas de este motor
- ORA-00001Unique constraint violated (violación de restricción única)
- ORA-00060Deadlock detected while waiting for resource (deadlock detectado al esperar un recurso)
- ORA-01017Invalid username/password; logon denied (usuario/contraseña no válidos; inicio de sesión denegado)
- ORA-01555Snapshot too old: rollback segment number too small (snapshot demasiado antiguo)
- ORA-01652Unable to extend temp segment by N in tablespace (no se puede extender el segmento temporal en el tablespace)