11g Member Kill Escalation

ORACLE_CLUSTER_11g Member Kill Escalation

https://blogs.oracle.com/Database4CN/entry/11g_%E6%96%B0%E7%89%B9%E6%80%A7_member_kill_escalation

首先我们介绍一下历史。在oracle 9i/10g 中,如果一个数据库实例需要驱逐(evict, alert 文件中会出现ora-29740错误)另一个实例时,需要通过LMON进程在控制文件(以下简称CF)中写入相应信息,当目标实例的LMON进程读取到相应的信息后,该实例shudown。但是,如果目标实例的LMON进程挂起而无法完成CF I/O的话,eviction将无法成功,这种情况有可能导致整个数据库挂起,需要dba手工干预。
    所以,从oracle 11gR1 开始,Member Kill Escalation的出现成功的解决了前面提到的情况。当实例eviction在指定的时间内(默认20秒)不能成功完成时,oracle会在css层面上(因为lmon进程会作为成员注册到css上,相应的内容会在今后的文章中介绍)产生一个新的进程 Kill Daemon(以下简称KD, 终止目标实例的LMON进程以保证eviction 能够成功结束。如果情况更糟,KD进程也无法在指定的时间内(默认30秒)终止LMON进程,css 会把member kill升级为node kill,目标节点的css会重新启动本节点,以确保数据库的一致性。当然,如果您的版本是11.2.0.2或更高,由于新特性Rebootlessrestart的引入,node kill首先会尝试重新启动GI stack,如果不能够完成,才会重新启动节点。
  接下来我们用下面的例子说明Member Kill Escalation是如何工作的。
1.实例2发现实例1LMS1进程出现问题,并发出member kill request.
实例2 Alert log
Sat Jul 24 10:37:37 2010
LMS1 (ospid: 22636) has detected no messaging activity from instance 1
LMS1 (ospid: 22636) issues an IMR to resolve the situation
Please check LMS1 trace file for more detail.
Sat Jul 24 10:37:37 2010 <=======
实例2发出reconfiguration请求
Communications reconfiguration: instance_number 1
Sat Jul 24 10:38:25 2010
Evicting instance 1 from cluster
Waiting for instances to leave:
1
Sat Jul 24 10:38:45 2010 <=====
reconfiguration请求发出20秒之后实例1仍然没有离开集群,实例2发出了member kill的请求。
Remote instance kill is issued with system inc 10
Remote instance kill map (size 1) : 1
Sat Jul 24 10:38:55 2010
Waiting for instances to leave:
1

2.
节点2ocssd.bin收到memberkill请求之后,向节点1KD发出了请求,要求终止节点1lmon进程。
节点2 ocssd.log
2010-07-24 10:38:45.112: [   CSSD][1091119424]clssgmExecuteClientRequest: Member kill request from client(0x2aaab4178470)
2010-07-24 10:38:45.113: [   CSSD][1091119424]clssgmReqMemberKill: Kill requested map 0x00000001 flags 0x2escalate 0xffffffff <========= member kill escalation
还没有发生。
2010-07-24 10:38:45.113: [   CSSD][1281349952]clssgmMbrKillThread: Kill requested map 0x00000001 id 2 Groupname DBOR08P flags 0x00000001 start time 0x98117058 end time 0x9811e77c timeout 30500 req node 2 <======= member kill 需要在30秒内完成。

如果节点1能够在指定的时间内(30秒)终止本地lmon进程,member kill 就不会被escalation 成为nodekill

3.
由于member kill 没有在指定的时间内完成,被escalate nodekill,即节点1 重启。
节点2 ocssd.log
2010-07-24 10:39:15.619: [   CSSD][1281349952]clssgmMbrKillThread: Time up: Start time -1743687592 End time-1743657092 Current time -1743657092 timeout 30500
2010-07-24 10:39:15.619: [   CSSD][1281349952]clssgmMbrKillThread: Member kill request complete.
2010-07-24 10:39:15.619: [   CSSD][1281349952]clssgmMbrKillSendEvent: Missing answers or immediateescalation: Req member 1 Req node 2 Number of answers expected 0 Number ofanswers outstanding 1
2010-07-24 10:39:15.620: [    CSSD][1281349952]clssgmMbrKillEsc:Escalating node 1 Member request 0x00000001 Member success 0x00000000 Memberfailure 0x00000000 Number left to kill 1
2010-07-24 10:39:15.620: [    CSSD][1281349952]clssnmKillNode:node 1 (ghlx062ptlge) kill initiated <======
节点1被重启

注意:member kill escalation不仅适用于database 实例,同时也适用于ASM实例。

 

你可能感兴趣的:(11g Member Kill Escalation)