ORA-04021: timeout occurred while waiting to lock object (timeout al esperar el bloqueo de un objeto)
Oracle¿Qué significa?
Se produjo un timeout al esperar para obtener un library cache lock/pin sobre un objeto (package, procedimiento, tipo, etc.). Suele ocurrir al intentar compilar o modificar un objeto PL/SQL mientras otra sesión lo está ejecutando o bloqueando.
¿Por qué ocurre?
El objeto que se quiere modificar/compilar se está ejecutando activamente en otra sesión o está bloqueado por otro DDL, por lo que no se puede obtener el library cache lock exclusivo. Una llamada a un procedimiento de larga duración o una sesión colgada pueden estar manteniendo el bloqueo.
Cómo solucionarlo
Busque la sesión que bloquea el objeto: SELECT * FROM dba_kgllock WHERE kgllkhdl IN (SELECT p1raw FROM v$session WHERE event LIKE 'library cache%'); o identifique la sesión que usa el objeto con v$access y v$session. Reintente el DDL/la compilación en una ventana de mantenimiento con poca carga. Si es necesario, termine la sesión de forma segura. Detener brevemente la aplicación facilita obtener el bloqueo.
Más entradas de este motor
- ORA-29913error in executing ODCIEXTTABLEOPEN callout (error al ejecutar el callout ODCIEXTTABLEOPEN)
- ORA-19804cannot reclaim N bytes disk space from M bytes limit (no se pueden recuperar N bytes de espacio en disco del límite de M bytes)
- ORA-00494enqueue held for too long by 'inst N, osid M' (enqueue retenido demasiado tiempo)
- ORA-04061existing state of package/procedure has been invalidated (se invalidó el estado existente del package/procedimiento)
- ORA-01466unable to read data - table definition has changed (no se pueden leer los datos; la definición de la tabla ha cambiado)
- ORA-08176consistent read failure; rollback data not available (fallo de lectura consistente; datos de rollback no disponibles)
- ORA-00020maximum number of processes (N) exceeded (se superó el número máximo de procesos (N))