周一的早晨睡意浓郁,伴着略微燥热的天气,心情没有那么舒畅。办公室里的装修味道攒了周末两天依旧扑鼻,人工净化器们陆续登场,也是个个睡眼惺忪。但一闻到办公室里不明气体后,精神抖擞,颇有战苍天斗帝皇之势。
照例巡检,点开nbu备份监控web界面,刷刷的红了一大片,what's wrong?
还好还好,报错的都是同一套库,看看信息,原来是D老头的系统。登上服务器看下,OS没有重启过,oracle进程不在了,看了下alert日志。额,上周五下午五点就挂掉了,监控竟然木有报警,那就是没加到监控里了。。
alert日志里面:
Instance Critical Process(pid:12,ospid:79514_79516,OFSD) died unexpectedly
PMON(ospid:79492):terminating the instance due to error 469
像这样的报错以前常有遇到,基本上呢都是些bug,某些oracle后台进程运作超时了,pmon便大义凛然,大家一起同归于尽。比较常见的是ckpt进程,这次显示的是OFSD进程。心里还是有点嘀咕的,因为我这边当前有上百套这样同版本同操作系统的数据库,并且已经运行将近两年了,头一次出现这样的情况。
看了alert日志里面指向的trace文件,cdump中的trace文件,没有找到有用的信息,pmon的trace文件里面显示有一堆的后台进程状态都是dead,难道当时操作系统资源十分紧张?
登录vmware的控制台,看了下那段时间的资源使用情况,cpu,内存,磁盘,网络,均正常,无压力。奇了怪了。
回头又开始查看/var/log/message,咦,在周五那天,五点前后的时段,出现了一个nscd信息,并且其它时间点并无此信息。机智如我,立马搜索下nscd是何方妖孽,dns缓存服务,不明所以。后来在MOS上搜了下,没找到与nscd相关信息,甚是奇怪。又回头把数据库宕机时候的各种进程trace文件看了一遍,依旧毫无头绪。
但各种trace文件给我的感觉是,系统哪里出问题了,导致oracle各种进程超时。于是又回去读/var/log/message,咳咳,在宕机那时段发现了这么一段话:
nscd.service:Main process exited,code=killed,status=9/KILL
我去,这特么不是被谁kill掉了么。
立马查看history操作,果然各种kill -9,其中就有kill -9 79514和kill -9 79516,也就是OFSD进程被人为kill掉了。
----------------------------------------------------------------------------------
早上发现数据库宕机时候,联系了D老头,并且“质问”他,这个系统平时没人用么,周五就宕机了,也没人嗷嗷叫。D老头大概被我的气势给唬住了,只有慌忙解释的份,丝毫没有意识到为啥周五宕机现在才发现,暗自窃喜。
告诉D老头数据库宕机了,没过多久,他就跑过来,让我一定要查明原因,巴拉巴拉一堆,颇为急切的模样。我好言安抚这瘦弱黢黑的东北汉子。
等我找到kill -9命令后,陡然想起,上周五,D老头在我们办公室晃悠,说什么文件删掉了,但是没有释放磁盘空间,要kill进程。。。
啧啧,这就叫天道有轮回么?
------------------------------------------------------------------------------------
没啥可复盘的,oracle的ofsd进程被kill掉了,被pmon进程发现了,这小子性情刚烈,最看重兄弟义气,只求同日亡,毅然橫剑。当然,我没有回头去求证,pmon和ofsd的感情是不是真的有那么深,其中说不定还有其他说不清道不明的关系。。。
------------------------------------------------------------------------------------
对于我这边,有两点需要改进,第一,root密码管理问题,有时候权利还是要掌握在少数人手中。第二,系统多了之后,容易出现疏漏,比如这个系统的监控就没部署到位,尚需查漏补缺。