暂无图片
暂无图片
1
暂无图片
暂无图片
暂无图片

ORA-07445导致RAC节点一频繁重启问题排查和解决方案

IT那活儿 2021-07-12
2228
环境介绍

数据库版本:11.2.0.4

操作系统内核版本:CentOS Linux release 7.4.1708 (Core)

数据库架构:11G R2 RAC环境

问题背景

巡检发现数据库最近发生了重启,通过GV$DATABASE视图查到具体的时间点,初步定为认为是数据库负载过大导致的,尝试打印相应的awr报告和通过对应时间点的alter日志查看是否有报错。

问题分析

1. 巡检数据库状态:

找到最近一次重启的时间点,按照时间点打印对应的awr或是ash报告分析数据库负载。


set feedback offset linesize 256set pagesize 50000set long 999999999alter session set nls_date_format='yyyy-mm-dd hh24:mi:ss';alter session set NLS_TIMESTAMP_FORMAT='YYYY-MM-DD HH24:MI:SS.FF';alter session set NLS_TIMESTAMP_TZ_FORMAT='YYYY-MM-DD HH24:MI:SS.FF TZH:TZM';select d.inst_id,d.name,i.instance_name,i.startup_time,i.status,d.open_mode from gv$database d,gv$instance i where d.inst_id=i.inst_id;

2. 打印AWR报告

通过打印AWR报告发现12号当天固定时间点出现断点,从awr报告的断点中可以知道12号0点,2点,4点,6点直到当天的14点,固定整点发生节点一重启问题。

3. 通过分析alter日志查询对应整点的情况

less log.xml

查询/ORA-07445报错,核实对应时间点都有ORA-07445报错,初步猜测数据库一节点自动重启和这个报错相关,时间点刚好吻合。

4. 按照alter日志打印的trc核实相应trc日志:

发现trace日志中有一个存储过程,采用拼接的方式绑定大量变量,绑定变量的个数查过数据库上线65535。

5. MOS上查询相关报错:

按照截图收缩可以找到对应的mos文章737378.1。核实数据库触发了 Bug 12578873

,此bug完全符合此场景。

6. 解决方案

经核实目前11.2.4版本,此bug提供的修复平台只有exadata和windows平台,因此只能采取Workaround给出的建议,协调开发修改存储过程逻辑,减少变量的绑定,避免触发此bug,最终开发修改了相关逻辑,数据库因此导致的宕机问题消除。

Description

This bug is only relevant when using PL/SQL
When using more than 65535 bind variables from PL/SQL we could
get a crash under opiaba(). This issue can also cause a memory corruption
and a subsequent ORA-600 and/or instance failure.

Workaround

Reduce the number of bind variables

END

更多精彩干货分享

点击下方名片关注

IT那活儿

文章转载自IT那活儿,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论