视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
RAC之GRD和PCMlock简介
2020-11-09 11:05:06 责编:小采
文档

GRD中记录PCM lock的信息,它位于每个实例的SGA中,但每个实例都仅含部分GRD、所有实例的GRD汇总在一起才是一个完整的GRD

GRD中记录PCM lock的信息

它位于每个实例的SGA中

但每个实例都仅含部分GRD、所有实例的GRD汇总在一起才是一个完整的GRD

PCM lock有3个主要属性:Mode、Role、PI

① Mode

--S

--X

--NULL

对于S,X两种锁模式这里不再赘述

而NULL代表对应的内存空间可以被重用、在没有被重用之前、实例是不能访问这里的数据

② Role

Role这个属性是用来描述“脏块”在集群间的分布状况

注意,“脏”只是用来描述数据块的内存版本和磁盘版本是否一致、和事务没有关系

Role有两个取值:Local和Global

⑴ 对于Local Role、Mode只会是S或X:

Ⅰ 如果Mode是S,则该数据块内存版本和磁盘版本一致

Ⅱ 如果Mode是X, 则该数据块内存版本和磁盘版本不同

当拥有Local Role和X Mode的实例给其他实例发送数据块:

Ⅰ 如果接收方收到的也是和磁盘一致的版本的,那么本实例(发送方)仍然保持Local Role

Ⅱ 如果接收方收到的和磁盘版本不一致,那么发送方和接收方的角色就要转换成Global

⑵ 对于Global Role、Mode可以是S、X、或NULL

Global Role意味着一个“脏块”同时被多个实例拥有

如果想要把这个“脏块”flush到磁盘,必须要联系GRD,让拥有该块Current版本的实例完成写动作

但对于拥有Local Role的实例而言,如果要把“脏块”flush到磁盘,不需要联系GRD,由本实例完成即可

③ Past Image

下面通过例子说明什么是Past Image

假设一个2节点的RAC集群,块_A在磁盘上的SCN=1

1)node1要修改块_A,从磁盘读入SGA进行修改,修改后块_A在内存中的SCN=2

2)node2也要修改块_A,,node1就会通过cache fusion把块_A传送给node2,传的是SCN=2的版本,

即Current copy的数据块,这时node1还是会保留这个SCN=2的块在SGA中,但是不能再进行任何修改

这时node1拥有的这个Image就叫做“Past Image”

在node1发送Current copy之前,会先把相应的redo entry flush到redo log

3)node2修改这个数据块,修改后SCN=3,但磁盘的版本仍然是SCN=1

4)如果node1发生检查点事件,因为node1上块_A是“脏块”,所以块_A必须被同步到磁盘

5)node1会联系GRD,发现node2拥有块_A的Current版本,GRD会通知node2把这个块写入磁盘

6)node2完成写之后,会通知所有拥有PI版本的实例释放他们所拥有的PI内存

下载本文
显示全文
专题