oracle11gR版本GI中新增,Oracle11g新特性MemberKillEscalation简介
從oracle 11gR1 開始,Member Kill Escalation的出現(xiàn)成功的解決了前面提到的情況。當(dāng)實(shí)例eviction在指定的時(shí)間內(nèi)(默認(rèn)20秒)不能
首先我們介紹一下歷史。在Oracle 9i/10g 中,如果一個(gè)數(shù)據(jù)庫(kù)實(shí)例需要驅(qū)逐(evict, alert 文件中會(huì)出現(xiàn)ora-29740錯(cuò)誤)另一個(gè)實(shí)例時(shí),需要通過(guò)LMON進(jìn)程在控制文件(以下簡(jiǎn)稱CF)中寫入相應(yīng)信息,當(dāng)目標(biāo)實(shí)例的LMON進(jìn)程讀取到相應(yīng)的信息后,該實(shí)例shudown。但是,如果目標(biāo)實(shí)例的LMON進(jìn)程掛起而無(wú)法完成CF I/O的話,eviction將無(wú)法成功,這種情況有可能導(dǎo)致整個(gè)數(shù)據(jù)庫(kù)掛起,需要dba手工干預(yù)。
所以,,從oracle 11gR1 開始,Member Kill Escalation的出現(xiàn)成功的解決了前面提到的情況。當(dāng)實(shí)例eviction在指定的時(shí)間內(nèi)(默認(rèn)20秒)不能成功完成時(shí),oracle會(huì)在css層面上(因?yàn)閘mon進(jìn)程會(huì)作為成員注冊(cè)到css上,相應(yīng)的內(nèi)容會(huì)在今后的文章中介紹)產(chǎn)生一個(gè)新的進(jìn)程 Kill Daemon(以下簡(jiǎn)稱KD), 終止目標(biāo)實(shí)例的LMON進(jìn)程以保證eviction 能夠成功結(jié)束。如果情況更糟,KD進(jìn)程也無(wú)法在指定的時(shí)間內(nèi)(默認(rèn)30秒)終止LMON進(jìn)程,css 會(huì)把member kill升級(jí)為node kill,目標(biāo)節(jié)點(diǎn)的css會(huì)重新啟動(dòng)本節(jié)點(diǎn),以確保數(shù)據(jù)庫(kù)的一致性。當(dāng)然,如果您的版本是11.2.0.2或更高,由于新特性Rebootless restart的引入,node kill首先會(huì)嘗試重新啟動(dòng)GI stack,如果不能夠完成,才會(huì)重新啟動(dòng)節(jié)點(diǎn)。
接下來(lái)我們用下面的例子說(shuō)明Member Kill Escalation是如何工作的。
1.實(shí)例2發(fā)現(xiàn)實(shí)例1的LMS1進(jìn)程出現(xiàn)問(wèn)題,并發(fā)出member kill request.
實(shí)例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 <======= 實(shí)例2發(fā)出reconfiguration請(qǐng)求
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請(qǐng)求發(fā)出20秒之后實(shí)例1仍然沒(méi)有離開集群,實(shí)例2發(fā)出了member kill的請(qǐng)求。
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. 節(jié)點(diǎn)2的ocssd.bin收到member kill請(qǐng)求之后,向節(jié)點(diǎn)1的KD發(fā)出了請(qǐng)求,要求終止節(jié)點(diǎn)1的lmon進(jìn)程。
節(jié)點(diǎn)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還沒(méi)有發(fā)生。
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秒內(nèi)完成。
如果節(jié)點(diǎn)1能夠在指定的時(shí)間內(nèi)(30秒)終止本地lmon進(jìn)程,member kill 就不會(huì)被escalation 成為node kill。
3.由于member kill 沒(méi)有在指定的時(shí)間內(nèi)完成,被escalate 為node kill,即節(jié)點(diǎn)1 重啟。
節(jié)點(diǎn)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 <====== 節(jié)點(diǎn)1被重啟
注意:member kill escalation不僅適用于database 實(shí)例,同時(shí)也適用于ASM實(shí)例。
本條技術(shù)文章來(lái)源于互聯(lián)網(wǎng),如果無(wú)意侵犯您的權(quán)益請(qǐng)點(diǎn)擊此處反饋版權(quán)投訴
本文系統(tǒng)來(lái)源:php中文網(wǎng)
總結(jié)
以上是生活随笔為你收集整理的oracle11gR版本GI中新增,Oracle11g新特性MemberKillEscalation简介的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: python高频词_python几万条微
- 下一篇: 计算机软件及其软件系统,计算机软件系统课