ORA-04021: timeout occurred while waiting to lock object
OracleЧто это значит?
Истёк тайм-аут ожидания получения library cache lock/pin на объект (пакет, процедуру, тип и т. д.). Обычно возникает при попытке скомпилировать или изменить объект PL/SQL, пока он выполняется или заблокирован другим сеансом.
Почему возникает?
Изменяемый/компилируемый объект активно выполняется в другом сеансе или заблокирован другим DDL, поэтому исключительную блокировку library cache получить невозможно. Блокировку может удерживать долгий вызов процедуры или зависший сеанс.
Как исправить
Найдите сеанс, блокирующий объект: SELECT * FROM dba_kgllock WHERE kgllkhdl IN (SELECT p1raw FROM v$session WHERE event LIKE 'library cache%'); или определите сеанс, использующий объект, с помощью v$access и v$session. Повторите DDL/компиляцию в окно обслуживания с низкой нагрузкой. При необходимости безопасно завершите сеанс. Кратковременная остановка приложения облегчает получение блокировки.
Ещё по этой СУБД
- ORA-29913error in executing ODCIEXTTABLEOPEN callout
- ORA-19804cannot reclaim N bytes disk space from M bytes limit
- ORA-00494enqueue held for too long by 'inst N, osid M'
- ORA-04061existing state of package/procedure has been invalidated
- ORA-01466unable to read data - table definition has changed
- ORA-08176consistent read failure; rollback data not available
- ORA-00020maximum number of processes (N) exceeded