Partner and Status Table(PST)位于asm磁盘的第二个AU(AU1),也属于Physically addressed metadata,PST对于ASM非常重要,它记录了该磁盘组所有磁盘的磁盘号、磁盘之间的partner关系、failgroup信息、PST心跳信息以及磁盘状态,磁盘的第二个AU(AU1)为PST保留,但并不是磁盘组内的所有磁盘都有PST,磁盘组冗余级别不同,PST的个数也不同,如下:
- External Redundancy一般有一个PST
- Normal Redundancy至多有个3个PST
- High Redundancy 至多有5个PST
PST元数据由ASM实例的GMON进程维护,当mount diskgroup时,GMON进程会读取diskgroup中所有磁盘去找到PST,通过PST确认哪些磁盘是ONLINE可以使用的,哪些是OFFLINE不能使用的。当NORMAL或者HIGH Redundancy的磁盘组有磁盘发生offline或者drop时,GMON会去更新PST,并且最新版本的PST会在磁盘之间发生迁移。
磁盘第二个AU(AU1)的第一个block时PST header block,它属于PST的元数据,描述了PST的副本数量以及分布情况
没有PST的磁盘AU1的第一个block显示如下
[grid@rac1 trace]$ kfed read /dev/asmdisk-data5 aun=1 kfbh.endian: 1 ; 0x000: 0x01 kfbh.hard: 130 ; 0x001: 0x82 kfbh.type: 13 ; 0x002: KFBTYP_PST_NONE kfbh.datfmt: 1 ; 0x003: 0x01 kfbh.block.blk: 2147483648 ; 0x004: blk=0 (indirect) kfbh.block.obj: 2147483649 ; 0x008: disk=1 kfbh.check: 17662464 ; 0x00c: 0x010d8200 kfbh.fcn.base: 0 ; 0x010: 0x00000000 kfbh.fcn.wrap: 0 ; 0x014: 0x00000000 kfbh.spare1: 0 ; 0x018: 0x00000000 kfbh.spare2: 0 ; 0x01c: 0x00000000
复制
拥有PST的磁盘AU1的第一个block显示如下
[grid@rac1 trace]$ kfed read /dev/asmdisk-data3 aun=1 kfbh.endian: 1 ; 0x000: 0x01 kfbh.hard: 130 ; 0x001: 0x82 kfbh.type: 17 ; 0x002: KFBTYP_PST_META kfbh.datfmt: 2 ; 0x003: 0x02 kfbh.block.blk: 256 ; 0x004: blk=256 kfbh.block.obj: 2147483650 ; 0x008: disk=2 kfbh.check: 1074756307 ; 0x00c: 0x400f7ad3 kfbh.fcn.base: 0 ; 0x010: 0x00000000 kfbh.fcn.wrap: 0 ; 0x014: 0x00000000 kfbh.spare1: 0 ; 0x018: 0x00000000 kfbh.spare2: 0 ; 0x01c: 0x00000000 kfdpHdrPairBv1.first.super.time.hi:33107154 ; 0x000: HOUR=0x12 DAYS=0x6 MNTH=0xb YEAR=0x7e4 kfdpHdrPairBv1.first.super.time.lo:3385185280 ; 0x004: USEC=0x0 MSEC=0x175 SECS=0x1c MINS=0x32 kfdpHdrPairBv1.first.super.last: 2 ; 0x008: 0x00000002 kfdpHdrPairBv1.first.super.next: 2 ; 0x00c: 0x00000002 kfdpHdrPairBv1.first.super.copyCnt: 3 ; 0x010: 0x03 --3个PST副本,分布在disk 0,1,2上 kfdpHdrPairBv1.first.super.version: 1 ; 0x011: 0x01 kfdpHdrPairBv1.first.super.ub2spare: 0 ; 0x012: 0x0000 kfdpHdrPairBv1.first.super.incarn: 1 ; 0x014: 0x00000001 kfdpHdrPairBv1.first.super.copy[0]: 0 ; 0x018: 0x0000 -- disk 0 kfdpHdrPairBv1.first.super.copy[1]: 1 ; 0x01a: 0x0001 -- disk 1 kfdpHdrPairBv1.first.super.copy[2]: 2 ; 0x01c: 0x0002 -- disk 2 kfdpHdrPairBv1.first.super.copy[3]: 0 ; 0x01e: 0x0000 kfdpHdrPairBv1.first.super.copy[4]: 0 ; 0x020: 0x0000 kfdpHdrPairBv1.first.super.dtaSz: 3 ; 0x022: 0x0003
复制
- super.time.hi:最近一次更新PST的时间(年、月、日、时)
- super.time.lo:最近一次更新PST的时间(分、秒、毫秒、微妙)
- super.last:最近一次更新的PST版本号
- super.next:下一个可用的PST版本号
- super.copyCnt:拥有PST的磁盘个数
- super.copy[n]:PST副本列表,描述PST分布在哪些磁盘上
- super.incarn:PST副本列表的当前版本号,当PST迁移到其他磁盘上时,该值将变为super.last
- super.dtaSz:该磁盘组的磁盘数(包含offline和online)
除了PST header block之外,还有PST数据实时记录了磁盘组每一块磁盘的状态以及磁盘之间的PARTNER关系
[grid@rac1 trace]$ kfed read /dev/asmdisk-data3 aun=1 blkn=3 kfbh.endian: 1 ; 0x000: 0x01 kfbh.hard: 130 ; 0x001: 0x82 kfbh.type: 18 ; 0x002: KFBTYP_PST_DTA kfbh.datfmt: 2 ; 0x003: 0x02 kfbh.block.blk: 259 ; 0x004: blk=259 kfbh.block.obj: 2147483650 ; 0x008: disk=2 kfbh.check: 3504163057 ; 0x00c: 0xd0dd48f1 kfbh.fcn.base: 0 ; 0x010: 0x00000000 kfbh.fcn.wrap: 0 ; 0x014: 0x00000000 kfbh.spare1: 0 ; 0x018: 0x00000000 kfbh.spare2: 0 ; 0x01c: 0x00000000 kfdpDtaEv1[0].status: 127 ; 0x000: I=1 V=1 V=1 P=1 P=1 A=1 D=1 kfdpDtaEv1[0].fgNum: 1 ; 0x002: 0x0001 kfdpDtaEv1[0].addTs: 2462919836 ; 0x004: 0x92cd2c9c kfdpDtaEv1[0].partner[0]: 49154 ; 0x008: P=1 P=1 PART=0x2 kfdpDtaEv1[0].partner[1]: 49153 ; 0x00a: P=1 P=1 PART=0x1 kfdpDtaEv1[0].partner[2]: 10000 ; 0x00c: P=0 P=0 PART=0x2710 kfdpDtaEv1[0].partner[3]: 0 ; 0x00e: P=0 P=0 PART=0x0 kfdpDtaEv1[0].partner[4]: 0 ; 0x010: P=0 P=0 PART=0x0 kfdpDtaEv1[0].partner[5]: 0 ; 0x012: P=0 P=0 PART=0x0 kfdpDtaEv1[0].partner[6]: 0 ; 0x014: P=0 P=0 PART=0x0 kfdpDtaEv1[0].partner[7]: 0 ; 0x016: P=0 P=0 PART=0x0 kfdpDtaEv1[0].partner[8]: 0 ; 0x018: P=0 P=0 PART=0x0 kfdpDtaEv1[0].partner[9]: 0 ; 0x01a: P=0 P=0 PART=0x0 kfdpDtaEv1[0].partner[10]: 0 ; 0x01c: P=0 P=0 PART=0x0 kfdpDtaEv1[0].partner[11]: 0 ; 0x01e: P=0 P=0 PART=0x0 kfdpDtaEv1[0].partner[12]: 0 ; 0x020: P=0 P=0 PART=0x0 kfdpDtaEv1[0].partner[13]: 0 ; 0x022: P=0 P=0 PART=0x0 kfdpDtaEv1[0].partner[14]: 0 ; 0x024: P=0 P=0 PART=0x0 kfdpDtaEv1[0].partner[15]: 0 ; 0x026: P=0 P=0 PART=0x0 kfdpDtaEv1[0].partner[16]: 0 ; 0x028: P=0 P=0 PART=0x0 kfdpDtaEv1[0].partner[17]: 0 ; 0x02a: P=0 P=0 PART=0x0 kfdpDtaEv1[0].partner[18]: 0 ; 0x02c: P=0 P=0 PART=0x0 kfdpDtaEv1[0].partner[19]: 0 ; 0x02e: P=0 P=0 PART=0x0 kfdpDtaEv1[1].status: 127 ; 0x030: I=1 V=1 V=1 P=1 P=1 A=1 D=1 kfdpDtaEv1[1].fgNum: 2 ; 0x032: 0x0002 kfdpDtaEv1[1].addTs: 2462919836 ; 0x034: 0x92cd2c9c kfdpDtaEv1[1].partner[0]: 49152 ; 0x038: P=1 P=1 PART=0x0 kfdpDtaEv1[1].partner[1]: 49154 ; 0x03a: P=1 P=1 PART=0x2 kfdpDtaEv1[1].partner[2]: 10000 ; 0x03c: P=0 P=0 PART=0x2710 kfdpDtaEv1[1].partner[3]: 0 ; 0x03e: P=0 P=0 PART=0x0 kfdpDtaEv1[1].partner[4]: 0 ; 0x040: P=0 P=0 PART=0x0 kfdpDtaEv1[1].partner[5]: 0 ; 0x042: P=0 P=0 PART=0x0 kfdpDtaEv1[1].partner[6]: 0 ; 0x044: P=0 P=0 PART=0x0 kfdpDtaEv1[1].partner[7]: 0 ; 0x046: P=0 P=0 PART=0x0 kfdpDtaEv1[1].partner[8]: 0 ; 0x048: P=0 P=0 PART=0x0 kfdpDtaEv1[1].partner[9]: 0 ; 0x04a: P=0 P=0 PART=0x0 kfdpDtaEv1[1].partner[10]: 0 ; 0x04c: P=0 P=0 PART=0x0 kfdpDtaEv1[1].partner[11]: 0 ; 0x04e: P=0 P=0 PART=0x0 kfdpDtaEv1[1].partner[12]: 0 ; 0x050: P=0 P=0 PART=0x0 kfdpDtaEv1[1].partner[13]: 0 ; 0x052: P=0 P=0 PART=0x0 kfdpDtaEv1[1].partner[14]: 0 ; 0x054: P=0 P=0 PART=0x0 kfdpDtaEv1[1].partner[15]: 0 ; 0x056: P=0 P=0 PART=0x0 kfdpDtaEv1[1].partner[16]: 0 ; 0x058: P=0 P=0 PART=0x0 kfdpDtaEv1[1].partner[17]: 0 ; 0x05a: P=0 P=0 PART=0x0 kfdpDtaEv1[1].partner[18]: 0 ; 0x05c: P=0 P=0 PART=0x0 kfdpDtaEv1[1].partner[19]: 0 ; 0x05e: P=0 P=0 PART=0x0
复制
- kfdpDtaEv1[n].status:该磁盘状态,正常online可读写的磁盘状态为0x7f也就是127
- kfdpDtaEv1[n].fgNum:该磁盘所属failgroup number
- kfdpDtaEv1[n].addTs:该磁盘加入磁盘组的时间戳
- kfdpDtaEv1[n].partner[i]:该磁盘的partner列表,该列表最大为20个slot,最多只能有8个slot为active状态,也就是说该磁盘最多只能与8块盘互为partner
为了保护NORMAL和HIGH冗余磁盘partner之间的安全和数据一致性,oracle设计了一个PST的心跳块位于拥有PST的磁盘AU1的最后一个块上,当PST心跳延时超过“_asm_hbeatiowait”(默认15s)时,磁盘组将被强制dismount
[grid@rac1 trace]$ kfed read /dev/asmdisk-data3 aun=1 blkn=255 kfbh.endian: 1 ; 0x000: 0x01 kfbh.hard: 130 ; 0x001: 0x82 kfbh.type: 19 ; 0x002: KFBTYP_HBEAT kfbh.datfmt: 2 ; 0x003: 0x02 kfbh.block.blk: 511 ; 0x004: blk=511 kfbh.block.obj: 2147483650 ; 0x008: disk=2 kfbh.check: 3600100627 ; 0x00c: 0xd6952d13 kfbh.fcn.base: 0 ; 0x010: 0x00000000 kfbh.fcn.wrap: 0 ; 0x014: 0x00000000 kfbh.spare1: 0 ; 0x018: 0x00000000 kfbh.spare2: 0 ; 0x01c: 0x00000000 kfdpHbeatB.instance: 1 ; 0x000: 0x00000001 kfdpHbeatB.ts.hi: 33115651 ; 0x004: HOUR=0x3 DAYS=0x10 MNTH=0x3 YEAR=0x7e5 kfdpHbeatB.ts.lo: 2698943488 ; 0x008: USEC=0x0 MSEC=0x3a7 SECS=0xd MINS=0x28 kfdpHbeatB.rnd[0]: 1529444524 ; 0x00c: 0x5b2978ac kfdpHbeatB.rnd[1]: 1274815798 ; 0x010: 0x4bfc2536 kfdpHbeatB.rnd[2]: 4254773072 ; 0x014: 0xfd9aaf50 kfdpHbeatB.rnd[3]: 418287143 ; 0x018: 0x18ee8e27
复制
最后修改时间:2021-11-04 17:31:26
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。
评论
相关阅读
【纯干货】Oracle 19C RU 19.27 发布,如何快速升级和安装?
Lucifer三思而后行
623次阅读
2025-04-18 14:18:38
Oracle RAC 一键安装翻车?手把手教你如何排错!
Lucifer三思而后行
611次阅读
2025-04-15 17:24:06
XTTS跨版本迁移升级方案(11g to 19c RAC for Linux)
zwtian
508次阅读
2025-04-08 09:12:48
Oracle数据库一键巡检并生成HTML结果,免费脚本速来下载!
陈举超
495次阅读
2025-04-20 10:07:02
【ORACLE】记录一些ORACLE的merge into语句的BUG
DarkAthena
472次阅读
2025-04-22 00:20:37
Oracle 19c RAC更换IP实战,运维必看!
szrsu
448次阅读
2025-04-08 23:57:08
【ORACLE】你以为的真的是你以为的么?--ORA-38104: Columns referenced in the ON Clause cannot be updated
DarkAthena
442次阅读
2025-04-22 00:13:51
一页概览:Oracle GoldenGate
甲骨文云技术
440次阅读
2025-04-30 12:17:56
【活动】分享你的压箱底干货文档,三篇解锁进阶奖励!
墨天轮编辑部
438次阅读
2025-04-17 17:02:24
火焰图--分析复杂SQL执行计划的利器
听见风的声音
390次阅读
2025-04-17 09:30:30