基于华为云平台的OracleRAC一个节点无法启动
之前的一个学生通过微信的寻求帮助:
林老师,你好!打扰了,今天遇到一个问题,我这里有一套Oracle rac
11g,今天有个节点2,asm 起不来 后台有报:【RAC】PMON: terminating the instance due to
error 481
看到这个信息其实无法判断到底发生了什么,当时我手里有活,就让他把两个节点的数据库日志,ASM日志以及集群日志都发给我看看。日志是晚上到我手里,对于DBA来讲真的就没有真正的自由时间,这个案例虽然不是分内工作可以随便提几个意见就好了,但是对于熟人的事情,我总是难以拒绝,想想这个事他肯定也顶着领导的压力,如果容易排查就不会轻易找我了,于是我开始分析日志内容
分析:
集群日志:
LMON (ospid: 8967): terminating the
instance due to error 29740
LMON:负责集群层面的节点关系,与其他实例的LMON进程定期心跳通信。当节点之间出现通信问题时,负责完成实例层面的重新配置和GES层面的实例恢复,当实例离开或加入集群,LMON负责实例层面的reconfiguration.每个数据库实例只有一个LMON进程
ASM 实例日志:
PMON (ospid: nnnn): terminating the
instandue to error ce 481
从集群日志看是由于错误29740导致LMON终止数据库实例,而ASM实例则由于错误481时得PMON将其关闭。下面就需要分析这个两个错误的含义,我习惯使用oerr小工具 查看错误号的含义,在现实生产库维护中,我也多次使用感觉提示的比较准确,所以查看错误号含义时使用oerr也就成了我的习惯。
oerr ora 29740
29740, 00000, "evicted by instance
number %s, group incarnation %s"
// *Cause: This instance was evicted from
the group by another instance of the
//
cluster database group for one of several reasons, which may
//
include a communications error in the cluster and failure to issue
//
a heartbeat to the control file.
// *Action: Check the trace files of other
active instances in the cluster
//
group for indications of errors that caused a reconfiguration.
oerr ora 481
00481, 00000, "LMON process terminated
with error"
// *Cause:
The global enqueue service monitor process died
// *Action: Warm start instance
看来是网络通信可能有问题,下面我们通过错误提示找到一篇MOS文档
MOS参考文档
ASM on Non-First Node (Second or Others)
Fails to Start: PMON (ospid: nnnn): terminating the instance due to error 481
(Doc ID 1383737.1)
根据提示我们分析了可能的问题,文档中提示的Case有几个
Case1: link local IP (169.254.x.x) is
being used by other adapter/network
Case2: firewall exists between nodes on private network (iptables
etc)
Case3: HAIP is up on some nodes but not
on all
$GRID_HOME/bin/crsctl stat res
ora.cluster_interconnect.haip -init
Case4: HAIP is up on all nodes but not
havesome do route info
Case5. HAIP is up on all nodes and route
info is presented but HAIP is not pingable
oracle@racnode2 script]$ netstat -r
oracle@racnode2 script]$ ping 169.254.x.x
通过比对,发现竟然HAIP不通了,这个真是没有想到。这里问题就比较清楚了:
haip不通,lmon关闭数据库实例,数据库实例的lmon aborted,ASM实例的LMON
因为被实例1 evicted,该进程aborted, ASM的PMON发现lmon aborted 关闭实例。这就是一直无法启动的原因。
后续经过排查,是华为的云工程师没有考虑到169.254.x.x网段,直接过滤掉了,再进一步追问,为了屏蔽改网段,之前是正常的,原来由于过节前做网络加固,除了安装文档中提到的RAC的相关地址,其他地址都封闭了,其实后面放行了,但是依然关闭了UDP,这个是后续的问题。
解决方法:对HAIP网段放行,并允许UDP通信。
后来写了个小段子,以资娱乐吧
•
Oracle集群无论跑在云平台或非云,做安全加固,不要只考虑文档中的提前规划的IP,对于集群而言HAIP是它的生命线,忽略了HAIP的安全策略必将导致集群重构(某个节点被evicted,ASM 实例被terminated)
•
云工程师:我负责网络加固,HAIP是啥东西
•
OracleDBA:天啊,没它我们会死
•
云工程师:哦,不能见死不救哦
•
OracleDBA:亲人那!
•
云工程师:欧了!
•
OracleDBA:集群拉起来了!thku
•
OracleDBA:大兄弟啊,做啥了,又挂了……
•
云工程师:啊,又死了,我们都放行了啊
•
OracleDBA:哦,可是我这HAIP又不通了
•
云工程师:嗯?我们怎么救你?
•
OracleDBA:大兄弟,UDP开了吗?
•
云工程师:哦,刚全关了,不安全!!!
•
OracleDBA:帮忙给个出口呗,我tma太需要了!
•
L
。
相关文章