oracle 11g归档日志研究_2

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了oracle 11g归档日志研究_2相关的知识,希望对你有一定的参考价值。

从第3块开始,块里面存储着oracle的所有操作记录。块结构很简单,只有块头和块体:

技术分享
typedef struct bk {
    Redo_bh blockhead;
    uint8_t buf[496];
}Redo_bk;
Redo_bk

 

块头与上一篇介绍过的一致:

技术分享
typedef struct bh {
    uint32_t signature;     //签名
    uint32_t blocknum;      //块号
    uint32_t sequence;      //顺序号
    uint16_t offset;        //最高位1需过滤掉
    uint16_t checksum;
}Redo_bh;
Redo_bh

块头中的offset表示当前块中第1个记录的所在位置,在11g中例如,它的值是80 00(x86架构cpu为小端序,用16进制编辑器打开为00 80),此时首位的1需要过滤掉(即&0x7FFF),它可能有以下几种值:
offset == 0:本块中不包含重新开始的记录,可能本块中没有数据(如第2块),或者本块完全被上一块占用了(跨块)。

offset >= 10:标记本块中记录开始的位置,位置是包括块头的,而块头是16字节(16进制的10),即如果offset == 10,则块头之后立即就是记录头。猜测offset应该小于512-16-记录头(最小的应该是24字节)=472字节。

 

块起始位置+offset之后,就是正常的操作记录了,块只起到对存储空间的划分作用,将块按照offset组合起来以后,可以获取到完整的操作记录。操作记录的结构(蛋疼的开始):

一个记录头(record head)

很多个change,每个change中:

  一个change头

  一个change向量表

  一组按照向量表排列的change数据

 

下面详细研究记录的内容。

以上是关于oracle 11g归档日志研究_2的主要内容,如果未能解决你的问题,请参考以下文章

oracle 11g归档日志研究_3

oracle rac 11g修改开启归档并修改归档日志路径

Oracle 11g正确删除归档日志方法

oracle 11g生产环境清理归档日志脚本

Oracle11g 归档模式

如何对oracle11g日志分析