有客户找到我这边咨询,说他们的一套核心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. Vue2知识点简要

    一.双向绑定原理 Vue2采用的是观察者-发布订阅模式,利用Object.defineProperty实现对数据已定义属性的监控(定义观察者模式), 编译DOM时解析v-model等属性以及对inpu ...

  2. C#将日期格式化为指定格式

    private void btn_GetTime_Click(object sender, EventArgs e) { lab_time.Text = DateTime.Now.ToString(& ...

  3. wiremock设置接口入参的判断条件

    一.wiremock管理台url: http://192.168.37.8:7777/__admin/swagger-ui/ 可重启测试桩,获取响应信息等操作  二.设置接口响应入参的判断条件 如当影 ...

  4. 每天学五分钟 Liunx 1000 | 软件篇:源码安装

    软件安装流程 前面软件篇提到了通过 RPM 和 YUM 在线安装的机制安装软件,除了这两种方式之外还有一种通过源码来安装软件的方式.

  5. bootstrap : 解决使图片全屏显示有空白边距的问题

    <!DOCTYPE html> <html lang="en"> <head>     <meta charset="utf-8 ...

  6. Go-使用本地时间解析时间字符串

    字符串 ==> time.Time package main import ( "fmt" "log" "time" ) func m ...

  7. [转帖]MySQL数据库8.0.29-8.0.31版本使用 INSTANT 算法新增字段bug

    https://www.cnblogs.com/harda/p/17528512.html xxx下发MySQL数据库共性隐患排查通知,要求统一排查MySQL数据库8.0.29及以后版本使用 INST ...

  8. [转帖]tcplife的使用

    https://www.rutron.net/posts/2203/bcc-tcplife-usage/ 这篇文档主要演示了 tcplife(Linux eBPF/bcc) 工具的使用. 示例 tcp ...

  9. [转帖]使用systemd-analyze 工具来分析各个服务进程的启动性能

    https://www.cnblogs.com/xingmuxin/p/11413784.html systemd-analyze是一个分析启动性能的工具,用于分析启动时服务时间消耗.默认显示启动是内 ...

  10. [转帖]s3fs

    https://github.com/s3fs-fuse/s3fs-fuse s3fs allows Linux, macOS, and FreeBSD to mount an S3 bucket v ...