2011-04-07 61 views
0

我使用alter table disable table lock子句錯誤地禁用了表上的鎖。 現在我想啓用它的鎖,因爲我想改變表名使用以下陳述:alter table啓用表鎖;和ORA-00054

SQL> alter table account.acctbk_payment_seq enable table lock; ALTER TABLE account.acctbk_payment_seq位於第1行啓用表鎖 * ERROR: ORA-00054:資源忙,並用指定NOWAIT或超時過期獲取

任何理想?

感謝您的回覆。 ORA 1120 爲examle:

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

ORA-00054:資源忙,並與指定的或超時過期

回答

1

從甲骨文的文檔NOWAIT獲取:

啓用表LOCK指定啓用表 LOCK以啓用表鎖,因此 允許在表上執行DDL操作。 所有當前正在執行的事務 必須在Oracle之前提交或回滾 數據庫啓用表鎖。

注意,不說「所有當前執行的事務正在使用該表」。我不確定這是否意味着在整個事件中不會有任何未完成的交易,但情況可能如此。

嘗試擺脫訪問數據庫中的所有會話,特別是任何可能對這個表打開一個事務。如果仍然出現錯誤,重新啓動實例可能會有所幫助。

更新:聽起來你可能需要從Oracle支持一些幫助。但是我在支持網站上進行了搜索,發現了一些關於可能的原因的說明。可能有一個不確定的分佈式事務觸及該表。看看這些查詢是否返回任何東西,如果是這樣,你需要解決這些未決的交易:

SELECT * FROM DBA_2PC_PENDING; 
SELECT * FROM DBA_2PC_NEIGHBORS; 
+0

謝謝,但重新啓動實例沒有幫助。 – Ssoon 2011-04-08 12:31:26