一尘不染

如何对Oracle进行ORA-02049的故障排除和锁定问题

sql

我偶尔会因某些长时间运行和/或密集的事务而收到ORA-02049。似乎没有这种模式,但是它发生在简单的INSERT上。

我不知道如何获取任何信息或Oracle,但是必须有办法吗?日志锁定或至少有一种查看当前锁定的方法?


阅读 169

收藏
2021-03-17

共1个答案

一尘不染

一种可能的方法可能是将INIT.ORA参数增加为distributed_lock_timeout更大的值。这样一来,您将有更长的时间观察v$lock表,因为锁将持续更长的时间。

要实现此目的的自动化,您可以

  • 每5到10秒运行一次SQL作业,该作业v$lock将sandos上面给出的值或查询记录到表中,然后对其进行分析以查看哪个会话导致了锁定。

  • 运行STATSPACKAWR报表。被锁定的会话应该以较高的时间显示,因此可以被识别。

v$session``blocking_instance, blocking_session, blocking_session_status可以将3列添加到上面的查询中,以了解被锁定的情况。

2021-03-17