最佳实践:巧妙kill CRS进程而不导致主机重启
张大朋(Lunar)Oracle 资深技术专家
Lunar 拥有超过十年的 ORACLE SUPPORT 从业经验,曾经服务于ORACLE ACS部门,现就职于 ORACLE Sales Consultant 部门,负责的产品主要是 Exadata,Golden Gate,Database 等。
我们都知道,在RAC环境中,如果kill ocssd.bin进程,会引起主机重启。
但是有时候系统已经异常了了,且CRS不能正常关闭,而主机可能是几年没重启的老系统,没人敢重启,现在怎么办?
我们只能尝试手工kill进程的方式,然后手工修复CRS(注意,在10.2 RAC中,只有3个d.bin进程)。
测试环境:操作系统是OEL 6.6
这套RAC的CRS版本是11.2.0.4:
查看当前CRS的状态:
查看当前所有的CRS进程:
我们开始模拟kill进程。首先kill 掉/u01/app/11.2.0.4/grid/bin/ohasd.bin
如果大家了解11.2RAC的启动过程,我们会知道,kill后会自动重启 。
然后,我们kill cssdmonitor:
这里没有这个进程,表示cssdmonitor进程被重启过了
检查进程
上面进程启动时间在20:04~20:07之间的,都是被/u01/app/11.2.0.4/grid/bin/ohasd.bin进程重启后,自动后台重启的。
现在,我们kill mdnsd gpnpd gipcd osysmond。这4个进程中,前面3个是CRS启动除了ohasd以外,最早启动的几个进程。
如果kill这些进程,ohasd都会重启的:
这里我们看到,刚才kill 的4 进程都没起来,怎么回事?别急,还没到时间,ohasd需要check后才启动。
然后,我们kill 监听:
我们看到,刚才kill的进程都被重启了,11.2的RAC真强悍啊。
现在我们kill /etc/init.d/init.ohasd进程:
’这里我们看到的就是/etc/init.d/init.ohasd被系统自动重启的过程。这些信息会记录在/var/log/message/中:
而且他进程都被自动重启了(注意这是crsd进程还没被重启):
现在我们依次kill:evmlogger.bin gpnpd.bin mdnsd.bin gipcd.bin evmd.bin oraagent.bin scriptagent.bin oraagent.bin orarootagent.bin和两个lisnterner
然后,kill osysmond.bin ologgerd cssdmonitor cssdagent :
现在就剩下一个ocssd.bin了:
现在我们kill 传说中一旦被kill就会引起主机重启的进程 ocssd.bin :
好了,我们的系统都还好好的,没有重启,资源也都释放干净了:
如果要恢复,很简单,只要直接重启crs就ok了:
检查进程:
检查集群状态
这里只显示了节点1,因为节点2我关闭了。
测试证明,只要先kill cssdmonitor 和 cssdagent进程(准确的说是cssagent),再kill ocssd.bin进程,系统是不会重启的。
另外,12.1普通RAC(非Flex Cluster)的情况根本文一样,处理思路和过程也一样。
----the end
假日远去,精彩还在继续!
11月4日,Oracle技术嘉年华 - 国内规模最大的Oracle技术盛会将在京举行,美国OOW的最新信息将悉数来至中国,欢迎您来到大会现场。
主题:数据•技术•平台 - 新时代的技术前沿
大会网站:http://2016otn.31huiyi.com/
会议时间:2016年11月4日(周五)- 5日(周六)
会议地点:北京·富力万丽酒店
更多Oracle技术嘉年华相关信息请点击了解:2016 Oracle技术嘉年华。
如何加入"云和恩墨大讲堂"微信群
搜索 盖国强(Eygle)微信号:eyygle,或者扫描下面二维码,备注:云和恩墨大讲堂,即可入群。每周与千人共享免费技术分享,与讲师在线讨论。
关注本微信(OraNews)回复关键字获取
2016DTCC, 2016数据库大会PPT;
DBALife,"DBA的一天"精品海报大图;
12cArch,“Oracle 12c体系结构”精品海报;
DBA01,《Oracle DBA手记》第一本下载;
YunHe,“云和恩墨大讲堂”案例文档下载;