Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1184440
  • 博文数量: 398
  • 博客积分: 10110
  • 博客等级: 上将
  • 技术积分: 4055
  • 用 户 组: 普通用户
  • 注册时间: 2007-12-23 20:01
个人简介

新博客http://www.cnblogs.com/zhjh256 欢迎访问

文章分类

全部博文(398)

文章存档

2012年(1)

2011年(41)

2010年(16)

2009年(98)

2008年(142)

2007年(100)

我的朋友

分类: Oracle

2007-12-25 14:56:26

写入和从Oracle kernel (KCB)缓存层度取得数据文件块通常通过数据库缓冲缓存。缓存层在每个数据块上读取和维护20个字节的头和4个字节的尾。缓存头在V$TYPE_SIZE中称为common block header,控制文件块也有这样的结构,虽然并不是全部的字段使用。
    DUMP出来的缓存头和尾如下:
    buffer tsn: 0 rdba: 0x00400002 (1/2)
    scn: 0x0000.00e9ffb4 seq: 0x01 flg: 0x04 tail: 0xffb40e01
    frmt: 0x02 chkval: 0xb31e type: 0x0e=KTU UNDO HEADER W/UNLIMITED EXTENTS
    头的组成如下:
    数据库块地址:4个字节,表空间相对数据库块地址(RDBA),由表空间相对文件号和数据块的块号构造;
    SCN:6个字节,块最后改变的SCN,低四个字节是SCN基础,前两个字节是SCN WRAP;
    sequence:1个字节,在同一个SCN期间每次改变块都会增加1,如果序列号WRAP,必须产生新的SCN。如果出现为0xff,则指示块中断。
    flag:1个字节,1代表:原始块;2代表:到块的最后改变是一个清除操作;4代表设置了checksum值,8代表临时数据;
    format:1个字节,通常为2。
    checksum:块内容的checksum,依赖于参数 db_block_checksum的设置,checksum被清除或设置。读取的时候,如果设置了该参数并且checksum在,则验证checksum。
    block type:1个字节,大多数为6,适用于表,索引,聚簇。
    unused:为使用空间,用于兼容性。
 
    尾由scn基础的低两个字节和快类型以及序列号组成。在块被读取时将计算头和尾的一致性,用来检测块中断,特别是热备份期间的块拆分。
阅读(647) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~