我偶尔得到ORA-02049进行一些长期运行和/或密集型交易.似乎没有这样的模式,但它发生在一个简单的INSERT上.
解决方法
一种可能的方法是将distributed_lock_timeout的INIT.ORA参数增加到更大的值.这样就可以让你更长的时间观察v $lock表,因为锁会持续更长时间.
为了实现自动化,您也可以
>每5-10秒运行一次sql作业,将v $lock或sandos给出的查询的值记录到表中,然后分析它以查看哪个会话导致锁定.
>运行STATSPACK或AWR报告.被锁定的会话应该以高的时间出现,因此可以被识别.
v $session还有3个更多的列blocking_instance,blocking_session,blocking_session_status可以添加到上面的查询中,以给出什么是锁定的图片.