簡體   English   中英

alter table啟用表鎖定; 和ORA-00054

[英]alter table enable table lock; and ORA-00054

我錯誤地使用alter table disable table lock子句禁用了表上的鎖。 現在,我想啟用它的鎖定,因為我想使用以下語句更改表名:

SQL> alter table account.acctbk_payment_seq啟用表鎖定; 更改表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的情況下進行獲取,或者超時

從Oracle文檔:

ENABLE TABLE LOCK指定ENABLE TABLE LOCK啟用表鎖,從而允許對表進行DDL操作。 在Oracle數據庫啟用表鎖定之前,所有當前正在執行的事務都必須提交或回滾。

注意不要說“ 正在使用該表的所有當前正在執行的事務”。 我不確定這是否真的意味着在整個實例中不會有任何未完成的事務,但是事實確實如此。

嘗試擺脫所有訪問數據庫的會話,尤其是那些可能針對該表打開了事務的會話。 如果仍然出現錯誤,則重啟實例可能會有所幫助。

更新 :聽起來您可能需要Oracle支持部門的一些幫助。 但是我在支持網站上進行了搜索,並找到了一些有關可能原因的說明。 可能會有不確定的分布式事務處理。 查看這些查詢是否返回任何內容,如果是,則需要解決這些未決的事務:

SELECT * FROM DBA_2PC_PENDING;
SELECT * FROM DBA_2PC_NEIGHBORS;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM