2015-09-12 7 views
-1

Когда я пытаюсь эту команду на Oracle SQL-разработчика:ORA-00054 Ошибка при попытке удалить таблицу

delete from my_table; 

Я получаю следующее сообщение об ошибке:

ORA-00054: ресурс занят и приобрести с указанием NOWAIT

Я не понял, как решить эту проблему.

+0

таблица была заблокирована другой транзакцией –

+1

Возможный дубликат [ORA-00054: ресурс занят и приобретается с указанным NOWAIT или истечением таймаута] (http://stackoverflow.com/questions/4842765/ora-00054-resource-busy -and-purchase-with-nowait-defined-or-timeout-expired) –

ответ

2

У кого-либо (или непреднамеренно) есть замок на столе. Запросить таблицу V$LOCKED_OBJECTS, чтобы найти имя пользователя (вы бы хотели, чтобы OS_USER_NAME) заблокировали его.

Вы можете попросить пользователя разблокировать таблицу. Им придется либо совершить, либо отменить свою транзакцию. Если они не в состоянии сделать это и позволит вам убить их сессии, вы можете использовать ниже:

alter system kill session 'sid, serial#' 

убить их сессии, которая имеет блокировку на вашем столе, где «sid» & «serial#» является то, что вам необходимо найти по запросу v$session, v$sqlarea таблиц.

Это также можно сделать в SQL-разработчике, вы можете узнать о сеансе (если у вашего пользователя есть доступ к мета-таблицам) из меню Tools --> Monitor Sessions Щелкните правой кнопкой мыши правильную запись сеанса (очень важно) и выберите отметку для kill , Вы должны иметь возможность удалять записи после того, как сессия будет убита.

+0

В приложении взаимоблокировки являются признаком плохого дизайна. В SQL Developer, возможно, это просто запутанная практика развития. В любом случае убийство сеанса блокировки должно быть последним средством (именно поэтому это ограниченная привилегия). – APC

+0

, когда я пытаюсь выполнить запрос: выберите * из V $ LOCKED_OBJECTS; я получаю ошибку «таблица или представление не существует» ... – ArLi91

+0

@ ArLi91 Вам нужно попросить своего администратора базы данных/Sysadmin сделать это за вас. Кажется, у вас нет необходимых привилегий для доступа к таблице 'V $ LOCKED_OBJECTS' – toddlermenot

0

Проверьте с помощью администратора базы данных. Они могут проверить, идет ли что-нибудь со столом. Может быть, кто-то что-то выполняет на столе в другой сессии. Администратор может убить сеанс. Затем вы сможете удалить/усечь таблицу.

Смежные вопросы