数据库版本: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;

通过打印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
Workaround

更多精彩干货分享
点击下方名片关注
IT那活儿

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




