首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ORA-00054错误的原因是什么?

ORA-00054错误的原因是什么?
EN

Stack Overflow用户
提问于 2012-04-27 20:43:16
回答 1查看 11.7K关注 0票数 0

来自Oracle的文档:

代码语言:javascript
复制
ORA-00054 resource busy and acquire with NOWAIT specified   

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

在我们的代码中,我们发出一个SELECT FOR UPDATE NOWAIT命令来锁定我们将要更新的行。

现在的逻辑是,如果它返回SQL error 54,那么就假设另一个用户正在尝试更新相同的记录。这个逻辑有效吗?

从Oracle的文档中可以看出,如果DB不堪重负,那么这也可能导致抛出此错误。

当我们只使用上面的SQL命令时,出现这个错误的可能原因是什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-04-27 21:10:39

SELECT ...FOR UPDATE尝试获取表上的RS (行共享)锁和行上的X (eXclusive)锁。如果另一个会话在表上有排他锁(例如创建索引)或在行上有排他锁(update、delete或select for update),那么查询将等待另一个事务释放锁(通常是commit或rollback ),除非您指定了NOWAIT。

因此,一种可能是不指定NOWAIT。

我没有意识到数据库可能因为“不堪重负”而抛出这个错误的情况。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10350821

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档