DBAtlas · Атлас эксплуатации баз данных

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/компиляцию в окно обслуживания с низкой нагрузкой. При необходимости безопасно завершите сеанс. Кратковременная остановка приложения облегчает получение блокировки.

Открыть в DBAtlas →

Ещё по этой СУБД