Oracle redo物理结构解析

作者简介:惠星星,现就职于北京海天起点,持有OCP 10g、OCP 11g、OCM 11g证书,并有长达8年电力行业业务维护、数据库维护服务经验,擅长Oracle数据库性能优化、故障处理及数据可视化技术研究。
online redo log files是Oracle数据库最重要的物理结构之一,深入理解redo物理结构,对于解决redo相关的数据库问题都有重要的作用,本文通过十六进制编辑器(vi+xxd)逐块分析Oracle redo log file物理结构,字节级解析oracle redo log。

redo logfile日志物理结构

redo log file默认块大小为512 byte,每个物理块解析如下所示,

block number 1:file header

block number 2: redo header

block number 3: N*REDO RECORD (N>=1),其中REDO RECORD包括:record header、N*Change Vector(N>=1)

检查redo Block Size大小

该测试环境redo log 大小50M,每组redo文件包括102400个512 byte blocks。

测试脚本

–创建测试表空间: ht

–创建测试用户: orastar

–创建测试表

–切换redo log file, /oradata/htdb/redo01.log为 CURRENT

–插入并提交测试数据

–再次切换日志

dump redo file

redo header

REDO RECORD

file header解析

%!xxd -g 1 —十六进制显示,每1个字节为1个块。

redo header解析

物理结构图解

%!xxd -g 1 —十六进制显示,每1个字节为1个块。

字节含义解释

start offset

end offset

解释

0

1

redo log block
4

5

block number
6

9

seq
14

15

Disk cksum
20

23

Compatibility Vsn
24

27

Db ID
28

31

Db Name
36

37

Control Seq
40

43

File size
44

45

Blksiz=512
48

49

File Number
50

51

File Type=2 LOG
52

55

Activation ID
92

154

descrip
156

157

nab: 0x9
160

163

resetlogs count
164

167

scn: 0x0000.0005eca9
172

173

hws: 0x2
180

183

Low scn: 0x0000.0008985b
188

191

Low scn Timestamp
192

195

Next scn: 0x0000.0008986d
200

203

Next scn Timestamp
221

224

Enabled scn: 0x0000.0005eca9
229

232

Enable scn Timestamp
233

236

Thread closed scn: 0x0000.0008985b
244

247

Thread closed scn Timestamp
292

295

prev resetlogs count: 0x2ab99238

low scn and next scn

timestamp计算规则

01/01/1988 00:00:00相对值,计算规则如下,

redo record解析

物理结构图解

%!xxd -g 1 —十六进制显示,每1个字节为1个块。

根据以上信息,重构执行语句:

与本文中测试脚本一致。

字节含义解释

start offset

end offset

解释

0

1

redo log blockt
4

12

RBA: 0x00001c.00000002.0010
16

17

LEN: 0x01ect
20

20

VLD: 0x0dt
24

27

SCN: 0x0000.00092424
80

83

SUBSCN: 1 10/30/2018 02:54:34t
84

85

OP:11.2
96

99

SCN:0x0000.0008d96f
106

107

OBJ:52032
128

135

xid
136

143

uba
144

147

DBA:0x01400014
148

151

hdba: 0x01400013
195

204

col 0
208

217

col 1
220

221

OP:5.2
280

281

OP:5.4
352

353

OP:5.1

redo record解释

redo record描述了对数据库一组原子性变更,由一个或多个change vectors组成,当使用redo record进行恢复时,确保整个事务的原子性(all or nothing),redo record由scn排序,redo recor由RBA标识其物理地址(physical address)。

OP(Opcode)字段说明

opcode代表具体的变更操作,由两部分组成,第一部分代表“layer” of the code (for
example data layer, transaction layer)
,第二部分代表该“layer”中的具体操作,如下所示,

what is rba

(RBA)描述重做日志文件中的物理位置, RBA组成结构如下所示,

RBA: 0x00001c.00000002.0010: logseq为28,log file的第2个block,偏移量为16个byte。

说明

以上内容为个人多次测试结果,由于个人原因,如有分析不足之处还请见谅及指正,谢谢。

参考文档

Question About RBA (Redo Block Address) (文档 ID 759966.1)

未经允许不得转载:Oracle一体机用户组 » Oracle redo物理结构解析

相关推荐