簡體   English   中英

ORA-00054錯誤的原因是什么?

[英]What is the reason for ORA-00054 error?

來自Oracle的文檔: -

ORA-00054 resource busy and acquire with NOWAIT specified   

  Cause: Resource interested is busy.
  Action: Retry if necessary. 

在我們的代碼中,我們發出一個SELECT FOR UPDATE NOWAIT命令來鎖定我們即將更新的行。

現在的邏輯是,如果它返回SQL錯誤54 ,則假定另一個用戶正在嘗試更新同一記錄。 這個邏輯有效嗎?

從Oracle的文檔看起來更像是如果數據庫不堪重負,那么這也可能導致拋出此錯誤。

當我們只使用上面的SQL命令時,出現此錯誤的可能原因是什么?

SELECT ... FOR UPDATE嘗試獲取表上的RS(行共享)鎖和行上的X(eXclusive)鎖。 如果另一個會話對表具有獨占鎖(例如,創建索引)或對行執行獨占鎖(更新,刪除或選擇更新),則查詢將等待另一個事務釋放鎖(提交或回滾)通常)除非你指定了NOWAIT。

所以一種可能性是不指定NOWAIT。

我不承認數據庫可能因為“不堪重負”而拋出此錯誤的情況。

暫無
暫無

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

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