有客户找到我这边咨询,说他们的一套核心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. Vue第一篇 ES6的常用语法

    01-变量的定义 <!DOCTYPE html> <html lang="en"> <head> <meta charset=" ...

  2. KVM 核心功能:CPU 虚拟化

    1 vCPU 简介 CPU 负责计算机程序指令的执行.QEMU-KVM 提供对虚拟机 CPU 的模拟,对于虚拟机来说,其拥有的 CPU 是真实的, 和物理 CPU 没有区别. 实际上,虚拟机在 hos ...

  3. 【rt-thread】board.h 文件中的内存大小配置如何决定

    确认RAM种类及性质 使用STM32F429IGT6芯片,根据数据手册RAM大小是256KB,常规RAM是 256 - 64 在board.h中配置内存大小 在board.h中配置256则会出错在接口 ...

  4. Java-Enum常量特定方法

    OnJava8-Enum-常量特定方法 用枚举实现责任链模式 责任链(Chain Of Responsibility)设计模式先创建了一批用于解决目标问题的不同方法,然后将它们连成一条"链& ...

  5. Oracle 不同字符集复合索引长度验证

    Oracle 不同字符集复合索引长度验证 背景 前段时间同事找到一个参数, 可以解决Oracle的char和byte 模式存储超长的问题. 很大程度上解决了研发修改SQL的工作量. 但是发现在某些字符 ...

  6. [转帖]火狐URL默认打开为HTTPS,切换成http形式

    火狐在当前及未来版本默认URL采用HTTPS进行链接,但个人习惯,某些网站不是https,改http在响应超时状态也会切成https,将默认为http. edge,chrome 依然还是http为主要 ...

  7. [转帖]Kafka—配置SASL/PLAIN认证客户端及常用操作命令

    介绍   SASL/PLAIN 是一种简单的 username/password安全认证机制,本文主要总结服务端开启该认证后,命令行客户端进行配置的操作流程. 配置 增加jaas.properties ...

  8. 在WPF应用中,结合阿里矢量图标库使用Geometry图标

    在我们的SqlSugar开发框架的WPF应端中,有时候我们需要在按钮或者其他界面元素上使用一些图标,框架中我们可以使用 lepoco/wpfui 项目的图标库,也可以使用Font-Awesome-WP ...

  9. 【dp,建模】AGC032D Rotation Sort

    Problem Link 有一个长为 \(n\) 的排列 \(p\),给定 \(A,B\),你每次可以做以下两种操作之一: 选取 \(l,r\),将 \(p[l:r]\) 循环右移,代价为 \(A\) ...

  10. 模块化Common.js与ES6

    为什么要模块化开发 1. 依赖关系(a文件依赖b文件中的方法,b文件必须在a文件之前引入) 2. 命名问题 (多个文件变量名,方法名相同会出现覆盖) 3. 代码组织(后期不好维护) 模块化规范有 1. ...