GRD中記錄PCM lock的信息,它位于每個實(shí)例的SGA中,但每個實(shí)例都僅含部分GRD、所有實(shí)例的GRD匯總在一起才是一個完整的GRD
GRD中記錄PCM lock的信息
它位于每個實(shí)例的SGA中
但每個實(shí)例都僅含部分GRD、所有實(shí)例的GRD匯總在一起才是一個完整的GRD
PCM lock有3個主要屬性:Mode、Role、PI
① Mode
--S
--X
--NULL
對于S,X兩種鎖模式這里不再贅述
而NULL代表對應(yīng)的內(nèi)存空間可以被重用、在沒有被重用之前、實(shí)例是不能訪問這里的數(shù)據(jù)
② Role
Role這個屬性是用來描述“臟塊”在集群間的分布狀況
注意,“臟”只是用來描述數(shù)據(jù)塊的內(nèi)存版本和磁盤版本是否一致、和事務(wù)沒有關(guān)系
Role有兩個取值:Local和Global
⑴ 對于Local Role、Mode只會是S或X:
Ⅰ 如果Mode是S,則該數(shù)據(jù)塊內(nèi)存版本和磁盤版本一致
Ⅱ 如果Mode是X, 則該數(shù)據(jù)塊內(nèi)存版本和磁盤版本不同
當(dāng)擁有Local Role和X Mode的實(shí)例給其他實(shí)例發(fā)送數(shù)據(jù)塊:
Ⅰ 如果接收方收到的也是和磁盤一致的版本的,那么本實(shí)例(發(fā)送方)仍然保持Local Role
Ⅱ 如果接收方收到的和磁盤版本不一致,那么發(fā)送方和接收方的角色就要轉(zhuǎn)換成Global
⑵ 對于Global Role、Mode可以是S、X、或NULL
Global Role意味著一個“臟塊”同時被多個實(shí)例擁有
如果想要把這個“臟塊”flush到磁盤,必須要聯(lián)系GRD,讓擁有該塊Current版本的實(shí)例完成寫動作
但對于擁有Local Role的實(shí)例而言,如果要把“臟塊”flush到磁盤,不需要聯(lián)系GRD,由本實(shí)例完成即可
③ Past Image
下面通過例子說明什么是Past Image
假設(shè)一個2節(jié)點(diǎn)的RAC集群,塊_A在磁盤上的SCN=1
1)node1要修改塊_A,從磁盤讀入SGA進(jìn)行修改,修改后塊_A在內(nèi)存中的SCN=2
2)node2也要修改塊_A,,node1就會通過cache fusion把塊_A傳送給node2,傳的是SCN=2的版本,
即Current copy的數(shù)據(jù)塊,這時node1還是會保留這個SCN=2的塊在SGA中,但是不能再進(jìn)行任何修改
這時node1擁有的這個Image就叫做“Past Image”
在node1發(fā)送Current copy之前,會先把相應(yīng)的redo entry flush到redo log
3)node2修改這個數(shù)據(jù)塊,修改后SCN=3,但磁盤的版本仍然是SCN=1
4)如果node1發(fā)生檢查點(diǎn)事件,因?yàn)閚ode1上塊_A是“臟塊”,所以塊_A必須被同步到磁盤
5)node1會聯(lián)系GRD,發(fā)現(xiàn)node2擁有塊_A的Current版本,GRD會通知node2把這個塊寫入磁盤
6)node2完成寫之后,會通知所有擁有PI版本的實(shí)例釋放他們所擁有的PI內(nèi)存
聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com