【问题标题】:Oracle Lock , How do they differ?Oracle Lock ,它们有何不同?
【发布时间】:2021-05-28 14:28:58
【问题描述】:

以下两个错误有什么区别。据我了解,它们发生在锁定的情况下。但是你知道可能发生的不同场景吗?

ORA-04021: timeout occurred while waiting to lock objectORA-00054: resource busy and acquire with NOWAIT specified

【问题讨论】:

    标签: oracle oracle11g locking database-locking


    【解决方案1】:

    ORA-04021 的示例可能是这样的:您的架构中有一个包。它包含一个程序,该程序完成一些需要 15 分钟才能完成的工作。有人运行该程序。同时,您希望修复该包中的某些内容,因此您编辑它的代码并想要编译它。好吧,你不能——它正在被使用,所以你必须等到它被释放。 Oracle 告诉您在您等待锁定包并编译它时发生了超时

    ORA-00054 的示例:有一张桌子。您更新了其中的一些值,但没有提交(也没有回滚),因为您还必须做 其他事情。在另一个会话中,另一个用户想要更改表的一个列(例如,扩大其大小)。然后 ALTER 将引发 0RA-00054,表示该表 busy(您正在另一个会话中更新它,对吗?)所以您必须等到事务提交(或回滚)。 p>

    【讨论】:

    • 谢谢,这确实让我很清楚。我在一个过程中遇到了 ORA-04021 的问题,请你帮我理解为什么在没有手动编译尝试的情况下会发生这种情况?问题在这里stackoverflow.com/q/67735655/4260544
    猜你喜欢
    • 2012-08-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-24
    • 2020-06-20
    • 2010-12-21
    • 1970-01-01
    • 2014-05-25
    相关资源
    最近更新 更多