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