案例:troubleshooting LGWR terminating the instance due to error 4021 on standby

该案例来自南区某客户的standby环境,数据库版本为11.2.0.4,凌晨实例发生了crash。

lgwr由于ORA-04021而终止了实例。diag进程收集了SystemState dump。

分析LGWR的process和session的state dump

LGWR长时间等待library cache lock,从namespace的p3分析可以看到lgwr正在以X模式请求dbinstance(这也是standby的一大特色),由于长时间(长达15分钟)无法请求到所以导致了ORA-04021从而crash实例。

通常standby的lgwr会在下列情况下去请求X模式的dbinstance library cache lock

关于standby中由于LGWR长时间以X模式持有dbinstance引起故障的问题非常多,比如anbob的blog中的这篇文章https://www.anbob.com/archives/5126.html,供参考。但是本case恰好相反,是LGWR长时间请求不到dbinstance的library cache lock。

我们知道library cache lock和row cache lock都属于是一种enqueue,S会阻塞X,X也会阻塞S。所以肯定有进程长时间持有S模式的lc lock,或者阻塞队列过长。

从trace中我们可发现有session以S模式持有了handle为0x15ee73a58的lock,并且能够定位到该session的SO:0x15646da20

搜索0x15646da20可以找到该session

从wait history可以看到会话2085在持有dbinstance的library cache lock的情况下,长时间请求不到s模式的row cache lock,使得LGWR请求dbinstance的library cache lock超时。row cache lock对应的dc为dc_rollback_segs。

当时肯定有session以X模式持有row cache lock,但是由于这是wait history,所以无法从此时的SystemState dump中去寻找到哪个session以X模式去请求访问dc_rollback_segs。

由于这是一个standby,是一个只读的数据库,为何还会有S/X模式去请求dc_rollback_segs的row cache lock呢?我也没想明白,之前处理过相关问题的同事发给我这样一段描述

似乎与备库没有redo也没有non-logged cleanouts有关。

关于non-logged cleanouts其实就是Fast Block Cleanout on Commit

此外还有一种情况就是dblink了,我们知道dblink会在本地产生事务

并且阻塞LGWR的session,正好也正在持有handle为0x1377e3440,namespace为dblink的library cache lock,并且长时间的X模式持有handle 0x1377e3440的library cache load lock。

 

会话2085对应的sql为:

正在查询link$,并没有找到带dblink的语句,说明这是一个以standby为源端的dblink查询。并且也阻塞了很多dblink操作的session,event为library cache load lock

猜测当时也有很多的dblink查询操作。但是从trace中发现实例启动以来并没有dblink完整执行。应该都还在解析阶段。

由于是standby并且已经重启,无法使用v$sysstat、v$active_session_history等视图来分析,也给分析带来了不少难度。

综上分析,结合mos文档LGWR (ospid: Xxx): Terminating The Instance Due To Error 4021 (Doc ID 2177473.1),我给的建议是:

关于_adg_parselock_timeout的算法,文章前推荐的anbob的那篇文章https://www.anbob.com/archives/5126.html中有详细描述。增大_adg_parselock_timeout只是增加了15分钟的timeout crash时间,如果长时间LGWR还是无法请求到X模式dbinstance的library cache lock,也可以尝试手动kill blocker。

 

 

此条目发表在Oracle, Oracle troubleshooting分类目录,贴了, , 标签。将固定链接加入收藏夹。

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注