原文: ORA-00054 resource busy and acquire with NOWAIT specifie .
Cause:The NOWAIT keyword forced a return to the command prompt because a resource was unavailable for a LOCK TABLE or SELECT FOR UPDATE command.
Action:Try the command after a few minutes or enter the command without the NOWAIT keyword .
原因:對表進行相關操作時,該表被鎖定,或表正在被其他程序占用,導致系統忙。
解決:對表解鎖或等待完成。
案例1:取消事務之後重新構建索引的時候出現錯誤
問題描述:有一個事務花費的時間比正常的要長一些,所以用戶結束了這個會話(ctrl+alt+del)。現在,這個表有一個ROW-X 鎖。以下是有關鎖的詳細信息:
OS User : rosemarie
OS PID : 396:482
Oracle User : ROSEM
Oracle ID : 27
Lock Type : DML
Lock Held : Row-X (SX)
Lock Requested : None
Status : Not Blocking
Object Owner : TOTALPLANT
Object Name : CUS_PRODUCTS
在重新構建這個表的索引的時候,得到如下錯誤信息:
alter index CUS_PRODUCT_IDX1 rebuild tablespace
TBSIDX_001
*
ERROR at line 1:
ORA-00054: resource busy and acquire with NOWAIT
specified
解決方案:當事務被取消的時候,事務所作的已經結束的工作需要回滾到上一個點。在取消之前,你的事務運行得時間較長,那麼完全回滾的過程很可能也會較長。除非事務已經回滾完畢,否則,數據定義語言,例如ALTER INDEX REBUILD這樣的命令就不能獲得它要執行完畢所需要的鎖。這種類型的命令不會等待鎖被釋放。這就是為什麼出現ORA-54錯誤信息的原因。在你獲得這個反饋的時間裡,你的長的運行事務應該是已經回滾完畢。所以你再次運行ALTER INDEX REBUILD語句,應該是可以工作良好的。