程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> 關於Oracle數據庫 >> 案例學習Oracle錯誤:ORA-00054

案例學習Oracle錯誤:ORA-00054

編輯:關於Oracle數據庫

  原文: 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語句,應該是可以工作良好的。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved