本文首发公众号「小创编程」
原文链接「https://www.chuonye.com/archives/oracle-redolog-format.html」
上篇文章,简单介绍了 RedoLog 是什么,以及怎么从 Oracle Dump 二进制日志。接下来,分析下 Redo Log 二进制文件的格式,主要包括:文件头,重做日志头,DML-INSERT 操作,DDL-CREATE 操作。
Redo Log 二进制文件中,采用的是小端序字节序。
1. File Header
文件头,占用第一个块。Oracle 中许多二进制的数据和日志文件都有相似的格式,在线日志 Redo Log 文件也是如此。下图是 RedoLog 文件开始的前 80 字节。
File Type
前 2字节
表示文件类型,区分不同的 Oracle 文件,比如,在 10g 版本中:
0xA2
表示数据文件,Data File0xC2
表示控制文件,Control File0x22
表示重做日志文件,Redo Log File
Oracle 数据库其实就是由一堆文件组成的。
Block Size
偏移量 20
,长度 2字节
,存储的是块大小,它的值是固定的,只会因操作系统而不同。在 Windows, Linux 和 Solaris 上,块大小为 512字节–0x0200
,而 HP-UX 的块大小为 1024。
另外,每个块都有一个 16字节
的块头,稍后会介绍它。