实践真知:一则因内存导致的集群故障

故障概述

某天晚上,我方收到行方请求协助分析某数据库两节点RAC数据库问题,问题描述如下:

该 数据库版本为11.2.0.3,该版本中ASM内存管理机制有所变化,导致ASM实例对共享内存的需求加大,由于该数据库ASM实例共享内存设置过小,导致ASM实例间歇性出现ORA-4031共享池无法分配连续内存空间。为解决该问题,行方决定调整ASM实例内存参数,而在首先修改节点2 ASM内存参数并重启节点2 grid集群过程中,发现节点1 grid集群状态异常,并且在重启节点2集群后,查看节点1 grid集群状态依然报错如下,但此时查看两节点数据库均可以正常访问,应用程序无异常。

另外,当节点2集群正常重启完成后,在节点1 grid集群状态由于ORA-4031错误,依然异常的情况下,出现节点2 vip 地址40.53.2.9同时出现在两个节点的现象如下,此时应用程序仍然无异常表现。

我方在接到服务请求后,通过全面收集相关日志信息进行分析诊断,给出如下诊断结果:

针对问题1诊断结果为:在修改节点2 ASM实例内存参数并重启节点2集群过程中,节点1 ASM实例遭遇严重的ORA-4031错误,导致节点1集群crsd进程异常终止,从而无法正常访问RAC集群配置文件voting及ocr所在的ASM磁盘组(datadg)。而在此过程中集群的crsd进程,曾多次尝试重启均由于ORA-4031问题而失败。经过分析判断后,在保证节点2存活的情况下,最终通过继续完成节点1ASM实例内存参数调整并重启节点1集群后恢复正常。

针对问题2诊断结果为:在节点2调整ASM实例内存参数并重启grid集群过程中,节点2 vip 40.53.2.9发生failover,该vip漂移至节点1,节点1正常接管节点2 vip 40.53.2.9后,由于节点1此时正遭遇严重的ORA-4031问题,导致接管后立刻再次进入failover状态,而此时节点2正处于重启过程中无法接管,导致节点2 VIP 40.53.2.9在节点1脱离集群管理,脱离集群管理后的资源不受cluster所管理,导致40.53.2.9一直出现在节点1上。而linux与windows不同,地址重复后并不会产生冲突,而是同时存在,此时应用客户端随机选取arp地址映射,学习到节点1的mac地址映射,就会使用节点1上的VIP,学习到节点2的mac地址映射,就会使用节点2上的VIP,而客户端配置了节点间的failover,所以此时就是连接了错误节点,仍然不影响应用程序正常运行。

故障分析

从节点2 alert_+ASM2.log日志中看到,12月7日 18:01:50在节点2修改ASM实例内存参数,并于18:04:33重启节点2 ASM实例。

节点2 alert_+ASM2.log日志摘录如下:

在节点2重启ASM实例过程中,节点1 alert_+ASM1.log日志中可以看到出现大量ORA-4031内存无法分配的错误:

节点1 alert_+ASM1.log日志摘录如下:

在文档概述部分我们看到:在节点2重启集群的过程中,节点1使用crsctl check crs查看集群状态,cssd进程及evmd进程处于正常的online状态,只有crs进程状态异常。

因此进一步观察节点1 crsd进程日志,可以看到在节点2重启集群的过程中,节点1由于ORA-4031错误导致导致ASM实例与存储OCR文件的ASM DATADG交互产生问题。

节点1 crsd.log日志信息摘录如下:

---此处省略大量由于ORA-4031错误导致读取OCRRAW出错的DUMP信息部分

---最终于18:04:48 CRSD异常终止

---crsd进程异常终止后尝试进行自动重启

---此处省略部分输出

---crsd尝试重启,由于无法正常打开集群重要的ocr和voting配置文件所在的磁盘组,最终crsd进程无法正常启动,此后不论是集群自动重试还是人工手动重启多次都以失败告终

以上从节点1 crsd日志看到crsd进程由于ASM实例的ORA-4031错误导致ASM实例与磁盘组之间的交互产生问题,那么我们进一步分析问题时段节点1grid集群alert_csrrac01.log同样可以看到ORA-4031错误导致crsd进程异常的现象。

节点1 grid 集群 alert_csrrac01.log日志摘录如下:

---此处记录了节点2修改ASM实例参数后,节点2人工重启grid集群

---crsd进程于18:04:48首次failed,这与节点1 crsd.log记录的首次失败时间吻合

---crsd异常终止的原因同样是由于无法正常访问OCR所在的物理存储

---此处省略部分类似输出

--节点1 crsd进程失败后,曾多次尝试重启,并最终达到尝试重启crsd进程次数

---节点1 crsd无法重启的原因依然是由于ORA-4031错误无法正常读取OCR所在物理存储,即: ASM datadg导致

最后,针对问题2,我们知道11g 集群在资源管理方面发生了很大改变,不同的资源通过不同的agent代理进行管理,而vip资源是通过orarootagent代理进行管理,进一步我们通过节点1的orarootagent_root.log可以发现如下信息:

节点1 grid 集群orarootagent_root.log日志摘录如下:

---由于节点2重启grid集群,导致节点1收到添加节点2 vip资源的信息

---此处省略部分输出

---尝试在节点1 igb0网络接口挂在节点2 vip 40.53.2.9

---节点2成功接管节点1vip 40.53.2.9

---由于此时节点1正遭遇严重的ORA-4031问题(见以上分析),导致成功接管节点2 vip后,状态立即变化为非正常的PARTIAL状态

---节点2 vip资源再次进入failover状态,而此时由于节点2在进行集群重启操作,尝试failover无法成功,而又无法被节点1正常接管,导致节点2 vip在节点1上脱离集群管理,由于最初节点1成功接管过节点2 vip,即在igb0接口成功挂在40.53.2.9地址,此时又无法进行failover,导致脱离集群管理后的的40.53.2.9地址继续挂在在igb0接口之上。

故障总结

由于本次ASM内存参数调整,首先更改并重启节点2集群,在此过程中节点1 ASM实例遭遇严重的ORA-4031错误,导致CRSD进程异常,从而引发节点1集群状态异常。

问题发生时,节点2 ASM实例内存参数已修改完成并重启成功,因此,在实例2保持存活的情况下,立即将节点1 的ASM内存参数修改并重启后,集群状态恢复正常。

附录:11.2.0.3/4 ASM 内存管理变化

ASM实例需要的共享内存与processes及diskgroup多少直接相关,而在Oracle 11.2.0.3和11.2.0.4版本中缺省的processes算法发生变化如下:

因此ASM实例需要更大的内存空间提供支持,以避免出现ORA-4031问题。

在Oracle 11.2.0.3/11.2.0.4中如果ASM实例使用的内存小于1536M,将可能导致ASM内存实例遭遇ORA-4031问题,Oracle官方推荐的ASM实例内存参数配置如下:

---the end

原文发布于微信公众号 - 数据和云(OraNews)

原文发表时间:2016-10-09

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏帘卷西风的专栏

linux编译curl库的动态库so

转载请注明出处:帘卷西风的专栏(http://blog.csdn.net/ljxfblog) 

401
来自专栏24K纯开源

mac下利用Breakpad的dump文件进行调试

一、前情回顾 最近把公司的一个视频处理程序更新了一个版本,准备提交测试的发现了崩溃的情况。这个程序采用Qt和ffmpeg技术栈开发,主要用于对视频进行渲染拼接处...

4219
来自专栏小白安全

绕过Edge、Chrome和Safari的内容安全策略

概述 ---- Web应用中有许多基本的安全机制,其中一个是同源(same-origin)策略机制,该机制规定了应用程序代码可以访问的资源范围。同源策略的...

3977
来自专栏Albert陈凯

VMWare安装Linux操作系统CentOS

上篇文章我们介绍了如何在Windows操作系统中安装VMWare软件,并创建一个虚拟机,链接地址:http://www.jianshu.com/p/6b589e...

2474
来自专栏Java工程师日常干货

【SpringBoot专题】监控健康状况前言监控插件:actuatorSpring Boot Admin:可视化后台管理系统总结

想一想,我们以前是如何监控一个Java应用的监控状况的?一般而言,我们会在Linux服务器上通过一些命令,比如通过jstat来统计堆内存的使用情况/垃圾回收的情...

2662
来自专栏Java技术栈

两张趣图助你理解 HTTP 状态码!

HTTP状态码(HTTP Status Code)是用以表示网页服务器HTTP响应状态的3位数字代码。

773
来自专栏散尽浮华

nginx+php负载均衡集群环境中的session共享方案梳理

在网站使用nginx+php做负载均衡情况下,同一个IP访问同一个页面会被分配到不同的服务器上,如果session不同步的话,就会出现很多问题,比如说最常见的登...

5207
来自专栏大数据和云计算技术

MySQL NDB Cluster实战

前言 本文来自睿哲科技的张树杰同学分享MySQL NDB集群的基础知识和搭建,非常赞! 希望越来越多的同学一起来分享,帮助他人,...

3967
来自专栏Seebug漏洞平台

DeDeCMS v5.7 密码修改漏洞分析

织梦内容管理系统(DedeCms)以简单、实用、开源而闻名,是国内最知名的PHP开源网站管理系统,也是使用用户最多的PHP类CMS系统,在经历多年的发展,目前的...

4378
来自专栏魏艾斯博客www.vpsss.net

lnmp 环境设置 301 重定向

1383

扫码关注云+社区