ASM Virtually addressed metadata-Active Change Directory

Active Change Directory简称ACD,是ASM的3号文件,我们都知道redo日志记录了数据文件数据块的每一次原子性变化,而ACD它描述了ASM元数据块每一次原子性变化,可以认为ACD是ASM实例的redo。redo根据database实例分为多个thread,同样ACD根据ASM实例也分为多个thread,每个thread为ACD分配了42个M,假如磁盘组AU为1M,那么thread 1使用0-41号extent,thread 2使用42-83号extent,以此类推

PXN_KFFXP为物理extent号,XNUM_KFFXP为逻辑extent号

  • 对于external冗余磁盘组,XNUM_KFFXP=PXN_KFFXP
  • 对于normal冗余磁盘组,XNUM_KFFXP=trunc(PXN_KFFXP/2)
  • 对于high冗余磁盘组,XNUM_KFFXP=trunc(PXN_KFFXP/3)

需要注意的是对于元数据asm文件,normal磁盘组也有3份镜像,所以XNUM_KFFXP=trunc(PXN_KFFXP/3),对于每一个thread的ACD的第一个AU的0号块,存放的是ACD checkpoint block,它记录着ASM磁盘组元数据的检查点信息,当磁盘组意外dismount,重新mount时,需要从ACD checkpoint的位置开始recover,这点与db实例的实例恢复类似。

每个thread的ACD checkpoint block之后的块都是Active change block,是真正存放ASM元数据块改动记录的地方,下面我们来看看ACD checkpoint block和Active change block存放的内容。

ACD checkpoint block:

  • KFBTYP_ACDC:ACD checkpoint
  • kfracdc.thread:ASM thread号
  • kfracdc.blk0:该thread的第一个Active change block块号
  • kfracdc.blks:该thread有多少个Active change block块,ASM元数据块大小为4k,10751个Active change block,再加上1个ACDC block,正好是42M即42个AU
  • kfracdc.ckpt.seq/blk:checkpoint ABA(ACD block address),类似于db实例的checkpoint rba
  • kfracdc.fcn.base/wrap:checkpoint FCN,类似于db实例的checkpoint scn

Active change block:

  • KFBTYP_CHNGDIR:Active change block
  • kfracdb.aba.seq/blk:ACD block address
  • kfracdb.ents:此Active change block有多少个lge(ACD redo log record)
  • kfracdb.lge:ACD redo log record,类似于db实例redo的重做记录
  • lge.chgCount:该lge有多少BCD(block change descriptor),BCD类似于db实例redo的重做记录的改动向量
  • lge.len:lge的size
  • lge.kfcn.base/wrap:lge的fcn,类似于db实例redo生成重做记录的SCN
  • lge.chgCount:该lge有多少BCD(block change descriptor)
  • lge.bcd:block change descriptor,类似于db实例redo的重做记录的改动向量,描述了每一次元数据块的改动
此条目发表在Oracle, Oracle Recover分类目录,贴了, 标签。将固定链接加入收藏夹。

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注