изменить таблицу включить блокировку таблицы;и ORA-00054 - PullRequest
0 голосов
/ 07 апреля 2011

Я отключил блокировку таблицы по ошибке, используя предложение alter table disable table lock.Теперь я хочу включить блокировку для него, потому что я хочу изменить имя таблицы, используя следующую оценку:

SQL> изменить таблицу account.acctbk_payment_seq enable table lock;изменить таблицу account.acctbk_payment_seq включить блокировку таблицы * ОШИБКА в строке 1: ORA-00054: ресурс занят и получение данных с указанным значением NOWAIT или истекло время ожидания

любой идеал?

спасибо за ваш ответ.ora 1120 для примера:

create table scott.t8 (id number);
alter table scott.t8 disable table lock;
alter table scott.t8 enable table lock;

ORA-00054: ресурс занят и получен с указанным значением NOWAIT или истекло время ожидания

1 Ответ

1 голос
/ 07 апреля 2011

Из документов Oracle:

ENABLE TABLE LOCK Указать ENABLE TABLE LOCK для включения блокировки таблицы, тем самым разрешить операции DDL на столе. Все выполняемые в настоящее время транзакции должен зафиксировать или откатить до Oracle База данных включает блокировку таблицы.

Обратите внимание, что в нем не указано "Все выполняющиеся в настоящее время транзакции , которые используют таблицу ". Я не уверен, действительно ли это означает, что не может быть никаких незавершенных транзакций во всем экземпляре, но это может иметь место.

Попробуйте избавиться от всех сеансов, обращающихся к базе данных, особенно от всех, в которых транзакция может быть открыта для этой таблицы. Если вы по-прежнему получаете сообщение об ошибке, перезапуск экземпляра может помочь.

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

SELECT * FROM DBA_2PC_PENDING;
SELECT * FROM DBA_2PC_NEIGHBORS;
...