zoukankan      html  css  js  c++  java
  • 11g 新特性 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或更高,由于新特性Rebootless restart的引入,node kill首先会尝试重新启动GI stack,如果不能够完成,才会重新启动节点。
        接下来我们用下面的例子说明Member Kill Escalation是如何工作的。
    1.实例2发现实例1的LMS1进程出现问题,并发出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. 节点2的ocssd.bin收到member kill请求之后,向节点1的KD发出了请求,要求终止节点1的lmon进程。
    节点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 0x2 escalate 0xffffffff <========= member kill escalation还没有发生。
    2010-07-24 10:38:45.113: [    CSSD][1281349952]clssgmMbrKillThread: Kill requested map 0x00000001 id 2 Group name DBOR08P flags 0x00000001 start time 0x98117058 end time 0x9811e77c time out 30500 req node 2 <======= member kill 需要在30秒内完成。

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

    3.由于member kill 没有在指定的时间内完成,被escalate 为node kill,即节点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 immediate escalation: Req member 1 Req node 2 Number of answers expected 0 Number of answers outstanding 1
    2010-07-24 10:39:15.620: [    CSSD][1281349952]clssgmMbrKillEsc: Escalating node 1 Member request 0x00000001 Member success 0x00000000 Member failure 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实例。

     

  • 相关阅读:
    洛谷P2602 [ZJOI2010]数字计数 题解
    数位DP模板
    The Meaningless Game 思维题
    CF55D Beautiful numbers 数位DP
    NOIP 2016 洛谷 P2827 蚯蚓 题解
    弹性碰撞问题:Ants+Linear world
    BZOJ1294 洛谷P2566 状态压缩DP 围豆豆
    朋友HDU
    树的深度———树形DP
    CF1292C Xenon's Attack on the Gangs 题解
  • 原文地址:https://www.cnblogs.com/l10n/p/9418200.html
Copyright © 2011-2022 走看看