有客户找到我这边咨询,说他们的一套核心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. 体验函数计算 FC 3.0,写测评赢取索尼头戴式耳机

    11月1日云栖大会,函数计算3.0全新升级,相对函数计算2.0,3.0版本突出易用性.高弹性,并且可以和更多阿里云服务无缝集成.业内首发神龙 Serverless GPU 架构,冷启动大幅优化,全链路 ...

  2. Linux一键安装docker脚本,含ubuntu和centos

    将脚本保存为docker_install.sh,可以上传git,到服务器中,git clone下来后,sh docker_install.sh即可自动安装 ubuntu实现 # 以Ubuntu为例 # ...

  3. Element-ui 之 form表单套数组、表单数组套数组的校验rules

    https://blog.csdn.net/qq_61553794/article/details/135451461

  4. es6-10

  5. 机器学习-无监督机器学习-SVD奇异值分解-24

    [POC] 1. 奇异值分解的本质 特征值分解只能够对于方阵提取重要特征, Ax=λx λ为特征值 x为对应的特征向量 奇异值分解可以对于任意矩阵: 注意看中间的矩阵是一个对角矩阵,颜色越深越起作用- ...

  6. 机器学习-线性分类-支持向量机SVM-软间隔-核函数-13

    目录 1. 总结 SVM 2. 软间隔svm 4. 核函数 1. 总结 SVM SVM算法的基础是感知器模型, 感知器模型 与 逻辑回归的不同之处? 逻辑回归 sigmoid(θx) 映射到 0-1之 ...

  7. 【C/C++】知识点笔记

    1 - 联合体内嵌结构体初始化赋值 union { struct { int i; float f; char *p; }; int o; } obj3 = { 1, 2.2, "sk&qu ...

  8. java - 标准类的定义

    一个标准的类需要拥有下面 4个 组成部分: 1. 所有的成员变量都要使用 private 关键字进行修饰 2. 为每一个成员变量编写 set.get 方法 3. 创建一个无参数的构造方法 4. 创建一 ...

  9. MyBatis06——动态SQL

    动态SQL if choose (when, otherwise) trim (where, set) foreach 搭建环境 1.搭建数据库 CREATE TABLE `blog` ( `id` ...

  10. [转帖]一文读懂 K8s 持久化存储流程

    https://zhuanlan.zhihu.com/p/128552232 作者 | 孙志恒(惠志) 阿里巴巴开发工程师 导读:众所周知,K8s 的持久化存储(Persistent Storage) ...