【发布时间】:2013-10-10 18:41:06
【问题描述】:
昨晚在我们计划的一个作业中的 TRUNCATE TABLE 语句中出现错误“ORA-00054:资源繁忙并使用 NOWAIT 指定获取”。我需要找出当时哪个进程和 DML 语句持有锁。我知道我们可以检查锁定对象的任何现有会话,但是我们可以从任何 oracle 跟踪文件中找出过去错误的详细信息吗?
【问题讨论】:
标签: sql database oracle oracle11g locking
昨晚在我们计划的一个作业中的 TRUNCATE TABLE 语句中出现错误“ORA-00054:资源繁忙并使用 NOWAIT 指定获取”。我需要找出当时哪个进程和 DML 语句持有锁。我知道我们可以检查锁定对象的任何现有会话,但是我们可以从任何 oracle 跟踪文件中找出过去错误的详细信息吗?
【问题讨论】:
标签: sql database oracle oracle11g locking
理论上,您可以通过查看 v$active_session_history 来查找可能会将您的表锁定为独占模式的查询。另一种理论上的方法是查看在服务器的 bdump/udump 目录中生成的跟踪。最好的方法是通过事件设置为下一次做准备,这将生成跟踪以防出现此特定错误。
【讨论】:
您可能想阅读这篇关于 Diagnosing Locking Problems using ASH 的博客,里面有很好的信息和演示。
【讨论】: