Ошибки · Решение
Oracle ORA-00054: ресурс занят другой сессией
Ошибка возникает на конкуренции блокировок: операция требует lock сейчас, а другой сеанс ещё не завершил транзакцию или DDL.
Короткий ответ
ORA-00054 означает, что текущая сессия не смогла получить нужный lock, потому что ресурс уже удерживается другой сессией.
Что означает ошибка
Ошибка возникает на конкуренции блокировок: операция требует lock сейчас, а другой сеанс ещё не завершил транзакцию или DDL.
Возможные причины
- Другая транзакция удерживает TM/TX lock на объекте.
- DDL выполняется с NOWAIT или истёк настроенный timeout ожидания.
- Долгая незавершённая транзакция не освободила таблицу или строки.
Что проверить
- Используйте сведения Type/ID1/ID2 из нового текста ошибки для поиска lock holder.
- Проверьте GV$SESSION и GV$LOCK, если у пользователя есть необходимые права.
- Определите, является ли удерживающая транзакция рабочей, зависшей или просто долгой.
Безопасные шаги
- Дождитесь COMMIT/ROLLBACK держателя, если операция штатная.
- Для DDL выберите окно без активной нагрузки либо настройте допустимое ожидание.
- Завершайте чужую сессию только после подтверждения, что её транзакцию можно безопасно прервать.
Только безопасные обратимые действия. Опасные шаги — только по официальной инструкции и с пониманием рисков.
Когда нужен сервис
- Если ORA-00054 постоянно блокирует регламентный DDL, DBA должен разобрать источник долгих транзакций и порядок блокировок.
Похожие ошибки
- /errors/oracle-ora-00001/
- /errors/oracle-ora-00904/
- /errors/oracle-ora-00933/
Что учитывать
Точная причина зависит от версии ПО/прошивки, полного текста ошибки и контекста. Официальная инструкция имеет приоритет.
Официальный источник
Расшифровка сверена с официальными страницами поддержки из источников ниже. Редакция N1RO не диагностировала ваш конкретный случай.