《Oracle高性能自动化运维》一一3.2 Redo组成结构

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介:

本节书摘来自华章计算机《Oracle高性能自动化运维》一书中的第3章,第3.2节,作者:冷菠 著,更多章节内容可以访问云栖社区“华章计算机”公众号查看。

3.2 Redo组成结构

Oracle Redo由两部分组成:
日志头(Redo Header):记录Redo的基本概要信息;
日志记录(Redo Record):记录数据库的详细更改。
3.2.1 Redo Header
Redo Header主要记录了Redo基本概要信息,例如数据库名称、控制文件序列号及日志Thread号等信息,如下所示:
image

3.2.2 Redo Record
日志记录(Redo Record)又被称为日志记录条目,记录了原子级的数据库更改操作。Redo Record由日志记录头(Redo Record Header)、更改矢量(Change Vector)两部分组成。

  1. Redo Record Header
    Redo Record Header位于每个Redo Record头部,记录了Redo Record信息概要,如下所示:

image

  1. Change Vector
    Redo Record包含一到多个更改矢量。一个Change Vector记录了一个数据块的一次更改。Change Vector由更改矢量头(Change Vector Header)、更改矢量主体结构(Change Vector Body)两部分组成。

(1)Change Vector Header
Change Vector Header结构如下:
image

其中:
CLS为Block类型,与x$bh.class保持一致。例如示例中的CLS为1,表示数据块的操作。
OP表示数据库操作码,用于记录数据库的操作类型。OP主要特点:
数据库的任何更改操作(OP)都会被记录在Redo中;
数据库更改操作(OP)包含Layer Code和Sub Code,中间使用“.”分开。例如OP(11.2)表示单行插入操作;
Oracle包含多种类型的更改操作(OP)。
Oracle主要的Layer Code如表3-1所示。
image

Layer Code不同使得Sub Code代表的操作也不一样,我们以常见的索引操作(OP:10)和行操作(OP:11)为例,介绍Sub Code的具体含义。
1)索引操作的Sub Code,如表3-2所示。
image

2)行操作Sub Code,如表3-3所示。
image

通过表3-3可以看到,示例中的OP(11.5)代表行更新操作。
Oracle Change Vector包含了多种类型的OP,记录了数据库的所有(类型)更改。
(2)Change Vector Body
Change Vector Body详细描述了数据库块级的更改信息,如下所示:
image
image

有关Redo结构的详细介绍,请参考7.1.3节。
(3)Change Vector 与 ITL
Change Vector与事务槽(ITL)的关系如下:
当事务开始时,系统在回滚段头的事务表中分配一个ITL事务槽,在Change Vector中以OP(5.2)表明事务开始;
当事务提交后,Change Vector中以OP(5.4)代表事务结束;
事务XID(Transaction ID)用于唯一标识事务;
UBA(Undo Block Address)记录了事务相关的Undo Record的存储位置;
ITL为XID与UBA组合,描述了事务的详细信息,关系如下所示:
ITL=XID+UBA
其中:
XID组成结构:
USN(Undo Segment Number):事务所在的Undo Segment ID;
TX TABLE SLOT(Undo Segment Header Transaction Table Slot):回滚段头事务表中的事务Slot号;
WRAP(Sequence Number):事务序列号。
UBA组成结构:
Undo Block DBA(Data Block Address):事务相关的Undo Block物理地址;
Sequence Number:Undo Block中的序列号;
Record Number:Undo Block中的记录索引号(Rec#)。
可以通过以下Dump示例查证Change Vector中的事务槽(ITL)。
1)Change Vector中的事务:
image

其中:OP(5.2)代表事务开始。
2)Change Vector中的ITL:
image

事务与ITL的详细介绍,请参考4.1.3节。

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
存储 Oracle 关系型数据库
Oracle的存储结构
Oracle的存储结构
116 1
|
2月前
|
Oracle 关系型数据库 BI
ORACLE Apex: EBS多组织结构 理解与配置
【8月更文挑战第11天】在Oracle Apex中理解和配置与EBS多组织结构相关内容需掌握:1) EBS多组织结构概念及组成部分,如法律实体、业务单位与库存组织;2) Oracle Apex与EBS集成的目的与方式,包括提供友好界面及自定义业务流程;3) 在Apex中配置多组织结构应用,涉及数据访问控制、页面报表设计及业务流程集成。整体而言,需精通EBS架构与Apex开发技术,以实现高效灵活的企业解决方案。
|
2月前
|
运维 应用服务中间件 网络安全
运维系列.Nginx配置文件结构功能总结
运维系列.Nginx配置文件结构功能总结
41 0
运维系列.Nginx配置文件结构功能总结
|
3月前
|
Oracle 关系型数据库
oracle redo 最佳实践
oracle redo 最佳实践
42 0
|
5月前
|
存储 SQL Oracle
【Oracle】玩转Oracle数据库(二):体系结构、存储结构与各类参数
【Oracle】玩转Oracle数据库(二):体系结构、存储结构与各类参数
99 7
|
5月前
|
SQL Oracle 关系型数据库
Oracle PL/SQL 第二章--块结构与标识符
Oracle PL/SQL 第二章--块结构与标识符
|
5月前
|
存储 SQL Oracle
Oracle-Oracle数据库结构
Oracle-Oracle数据库结构
100 0
|
12月前
|
Oracle Java 关系型数据库
JSP struts2工资管理系统myeclipse开发oracle数据库bs框架java编程网结构
JSP 工资管理系统是一套完善的struts2设计系统MVC结构,对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,开发环境为TOMCAT7.0,Myeclipse8.5开发,数据库为Oracle10g,使用java语言开发,系统主要采用B/S模式开发。
65 1
|
Oracle 前端开发 关系型数据库
使用隐含参数_disable_logging分析oracle写redo logfile的性能
oracle有一个隐含参数_disable_logging可以禁止日志的生成,这个参数当然不能在生产库使用,但我们可以将其因为与测试,例如,如果我们怀疑数据库写redo logfile存在性能问题,我们可以将这个参数设置为true,禁止写日志,看看oracle的性能提高了多少。
|
存储 SQL Oracle
Oracle数据库存储结构
Oracle数据库存储结构
100 0

推荐镜像

更多