有客户找到我这边咨询,说他们的一套核心ADG库在业务高峰期报错,因为业务做了读写分离,其备库也实际承担读业务,所以备库故障也会对业务产生影响。

这里也要提醒大家,做读写分离,如果读库出现故障的情况,要有切换到主库的应急方案考虑进去。

客户这里自己通过重启备库暂时解决,但担心故障再现,所以非常着急要分析原因和给出解决方案。

最直接的报错信息ORA-29771,具体如下:

ORA-29771: process USER (OSID 403660) blocks LGWR (OSID 195873) for more than 70 seconds
USER (ospid: 403660) is blocking LGWR (ospid: 195873) in a wait
LMHB (ospid: 195787) kills USER (ospid: 403660).

客户数据库版本是19.13。

我在接手后第一时间就先要求让客户安排人去开一个SR,我们有很多客户明明有买标服,但遇到紧急故障却不第一时间去开SR,而是依赖熟悉的技术人员帮着排查,以为这样就会省时间,其实这是很多客户的一个误区。

首先开SR并不会浪费多少时间,而且也可以让其他有时间的同事帮忙去提。也不会影响熟悉的技术人员排查,两条路一起走,更保险。而且有了SR,原厂的工程师们就可以通过SR号直接了解问题的基础背景信息,可以共同努力协同排查。

开完SR我这边也拿到客户的报错日志去帮助分析,在MOS发现这个错误对应不少bug,但版本不完全匹配,很多也有去设置 _adg_parselock_timeout 这个隐藏参数的workaround,这时具体就需要后台负责分析SR的工程师去进一步确认。

果然,后台最终定位是一个已知bug,根据客户19.13的版本,提供了对应版本的补丁下载。

需要注意的是应用完补丁之后还有其他操作,其中就涉及到上面提到的隐藏参数,老老实实的按文档步骤规范操作即可。

这里要给后台工程师点个赞,工程师在向客户索取了一些必要的TFA信息和ASH DUMP信息,经过分析后最终给出的指导意见也非常清晰,如下(涉及的系统名字等敏感信息已脱敏):

xxxxx2的lmhb进程的incident文件显示,LGWR多次被user process阻塞,等待状况如下。

--------------
ORA-29771: process USER (OSID 360031) blocks LGWR (OSID 195873) for more than 70 seconds
ORA-29771: process USER (OSID 344407) blocks LGWR (OSID 195873) for more than 70 seconds
ORA-29771: process USER (OSID 359423) blocks LGWR (OSID 195873) for more than 70 seconds
ORA-29771: process USER (OSID 374130) blocks LGWR (OSID 195873) for more than 70 seconds
ORA-29771: process USER (OSID 373345) blocks LGWR (OSID 195873) for more than 70 seconds
-------------- 现象发生时的wait chain都具有下面的特征,LGWR等待"library cache lock",USERS等待
"library cache load lock"。 xxxxx2_lmhb_195787.trc
=============================
*** 2023-04-24T10:28:55.315074+08:00 LGWR (ospid: 195873) has not moved for 64 sec (1682303334.1682303270)
: heartbeat check status 2 (acceptable) (threshold 70 sec)
: heartbeat poke time 0x6445e62b req 0x167aaf ack 0x167aae freq 10
: heartbeat state 0x1.ffff (inwait) pso-flag 0x0
: waiting for event 'library cache lock' for 832 secs with wait_id 206722203.
===[ Wait Chain ]===
LGWR (ospid: 195873) waits for event 'library cache lock'.
USER (ospid: 403660) waits for event 'library cache load lock'.
USER (ospid: 201329) waits for event 'cursor: pin S wait on X'.
USER (ospid: 292695) waits for event 'gc cr request'. 在ADG环境中,有下面的文档描述了USER进程阻塞LGWR引发ORA-29771的相同现象。
该现象在internal Bug 31961214中进行了调查。 ORA-29771 USER Process Blocks LGWR For More Than 70 Seconds Standby database (ADG) (Doc ID 2862283.1) 我确认了一下,针对您的环境DBRU 19.13提供了该Bug的修复补丁。请您访问下面的链
接下载并安装该补丁,确认相同现象是否还有重现性。 https://updates.oracle.com/download/31961214.html
Select a Release 选择 Oracle Database 19.13.0.0.0 DBRU
Platform or Language 选择 Linux x86-64 请注意安装完补丁之后,需要按照Doc ID 2862283.1的说明,修改相应的参数。

所以,通过这个比较简单的已知bug问题定位和处理,也鼓励我们的客户以后遇到问题能够及时提交SR,不要白白浪费了这么好的资源哈。

记录一则ADG备库报错ORA-29771的案例的更多相关文章

  1. 备库搭建后,进入备库报错psql: FATAL: the database system is starting up

        备库搭建后,进入备库报错psql: FATAL:  the database system is starting up  原因:备库配置文件没有hot_standby = on   mast ...

  2. 【故障处理】 DBCA建库报错CRS-2566

    [故障处理] DBCA建库报错CRS-2566 PRCR-1071 PRCR-1006 一.1  BLOG文档结构图       一.2  前言部分   一.2.1  导读和注意事项 各位技术爱好者, ...

  3. Python virtualenv安装库报错SSL: CERTIFICATE_VERIFY_FAILED

    Python virtualenv安装库报错SSL: CERTIFICATE_VERIFY_FAILED 问题描述 使用pip按照virtualenv报错,如下: pip install virtua ...

  4. Python djangorestframework安装库报错SSL: CERTIFICATE_VERIFY_FAILED

    Python djangorestframework 安装库报错SSL: CERTIFICATE_VERIFY_FAILED 问题描述 使用pip按照virtualenv报错,如下: pip inst ...

  5. yum install php-gd 安装php gd库报错Error: php56w-common conflicts with php-common-5.3.3-48.el6_8.x86_64 大

    yum install php-gd安装php gd库报错Error: php56w-common conflicts with php-common-5.3.3-48.el6_8.x86_64大概的 ...

  6. mysql删库报错

    3.开发人员测试环境删库报错 #解决:在数据库的物理目录中(mysql的data目录),进入要删除的数据库目录,查看是否有文件存在,若存在,使用rm -rf 命令清除:再次执行删除数据库命令即可 [r ...

  7. 记录一次python的mysqlclient依赖库报错问题

    描述: 最开始在测试环境装了mysql8,用来作为airflow后端的metadata存储: 在装了mysql8之后,通过pip3安装了mysqlclient=1.3.14:但是安装过程是在单独的ve ...

  8. Oracle 19c Data Guard DML Redirection ADG备库上执行DML重定向(未来更好的进行读写分离)

    资料来自官方网站: https://docs.oracle.com/en/database/oracle/oracle-database/19/sbydb/managing-oracle-data-g ...

  9. CentOS下安装php gd库报错Error: php56w-common conflicts with php-common-5.3.3-48.el6_8.x86_64

    因为服务器缺少php gd库,因为系统是centos,就是用yum去安装,一安装就报错如下: [root@iZ28sdxghs2Z ~]# yum install php-gd Loaded plug ...

  10. 解决pycharm安装python库报错问题

    最近在玩微信图灵机器人,不过我安装有一些库,安装报错,上网找了很久,总结有两种方法,记录一下 方法一: 手动安装,直接到官网你需要的python库下载到本地, 放在安装python路径,C:\User ...

随机推荐

  1. Serverless 架构下的 AI 应用开发

    Serverless架构与CI/CD工具的结合 CI/CD 是一种通过在应用开发阶段引入自动化流程以频繁向客户交付应用的方法.如图所示,CI/CD 的核心概念是持续集成.持续交付和持续部署. 作为一个 ...

  2. java两个list取交集

    直接上代码 List<Integer> list1 = new ArrayList<>(); list1.add(1); list1.add(2); list1.add(3); ...

  3. 十一、docker的容器互联

    系列导航 一.docker入门(概念) 二.docker的安装和镜像管理 三.docker容器的常用命令 四.容器的网络访问 五.容器端口转发 六.docker数据卷 七.手动制作docker镜像 八 ...

  4. 大数据(3)---HDFS客户端命令及java连接

    一.参数设置 之前有说到HDFS的备份数量和切块大小都是可以配置的,默认是备份3,切块大小默认128M 文件的切块大小和存储的副本数量,都是由客户端决定! 所谓的由客户端决定,是通过客户端机器上面的配 ...

  5. Vue3 Diff算法之最长递增子序列,学不会来砍我!

    专栏分享:vue2源码专栏,vue3源码专栏,vue router源码专栏,玩具项目专栏,硬核推荐 欢迎各位ITer关注点赞收藏 Vue2 Diff算法可以参考[Vue2.x源码系列08]Diff算法 ...

  6. idea 中添加查看字节码工具

    本文为博主原创,未经允许不得转载: jdk 的 bin 目录下存在 javap.exe 的工具,可通过 以下命令查看编译的字节码文件: javap -c Test.class 在 idea 中添加查看 ...

  7. C#/.Net Core/WPF框架初建(国际化、主题色)

    C#/.Net Core/WPF框架初建(国际化.主题色) English | 简体中文 作为 TerminalMACS 的一个子进程模块 - WPF管理端,目前搭建框架部分功能:本地化.国际化.主题 ...

  8. [转帖]“炫技” 还是 “真硬核”,OpenPPL 实测阿里「倚天 710」芯片

    https://my.oschina.net/openppl/blog/5524424   本文将以深度学习模型推理应用为出发点,对「倚天 710」这款 ARM Server 芯片进行性能方面的实测. ...

  9. [转帖]CentOS8时间同步服务

    时间同步服务 CentOS7之前的版本用的是ntpdate服务,之后用的是chrony服务 默认是安装的了 查看版本 [root@centos8 ~]#rpm -qi chrony Name : ch ...

  10. [转帖]Linux实用技巧——find查找指定时间内修改过的文件或目录

    https://cloud.tencent.com/developer/article/1694949 解决方案 例:查找出五分钟内修改过的文件 [root@mobius ~]$ find ./* - ...