ORA-00054: Ресурс занят, а захват запрошен с NOWAIT, или истёк тайм-аут
OracleЧто это значит?
Блокируемый ресурс (строка или таблица) заблокирован другой сессией и не может быть захвачен немедленно, поскольку указан NOWAIT или истёк DDL_LOCK_TIMEOUT.
Почему возникает?
Обычно это попытка DDL (ALTER TABLE, DROP, CREATE INDEX), пока таблица заблокирована другой транзакцией, либо встреча с заблокированной строкой при SELECT ... FOR UPDATE NOWAIT.
Как исправить
Найдите сессию, удерживающую блокировку: SELECT * FROM v$locked_object. Соедините v$session и v$lock, чтобы определить блокирующую сессию. Дождитесь завершения транзакции или при необходимости завершите её через ALTER SYSTEM KILL SESSION. Для DDL можно задать время ожидания: ALTER SESSION SET DDL_LOCK_TIMEOUT = 60; Выполняйте DDL в спокойные окна обслуживания.