redo 和 undo

redo->记录所有操作,用于恢复(redo records all the database transaction used for recovery)

Redo的作用是恢复已提交的事务,从而保证无论在介质失败还是实例失败时,都可以恢复用户已提交的事务,使数据库达到一致状态。

Redo功能的实现依赖于以下三个组件:

log buffer

lgwr

联机重做日志文件和归档日志文件

undo->记录所有的前印象,用于回滚(undo is used to store uncommited data infor used for rollback)

Undo的作用是:

回滚操作;

支持读一致性;

恢复失败的事务。

Undo的实现是通过Undo表空间内的undo段来实现的。每个事务只被分配一个undo段,undo段可以服务于多个事务。

Undo机制只是逻辑地把数据恢复到修改前的状态,而不是物理地恢复。

redo的原因是:每次commit时,将数据的修改立即写到online redo中,但是并不一定同时将该数据的修改写到数据文件中。因为该数据已经提交,但是只存在联机日志文件中,所以在恢复时需要将数据从联机日志文件中找出来,重新应用一下,使已经更改数据在数据文件中也改过来!

undo的原因是:在oracle正常运行时,为了提高效率,假如用户还没有commit,但是空闲内存不多时,会由DBWR进程将脏块写入到数据文件中,以便腾出宝贵的内存供其它进程使用。这就是需要UNDO的原因。因为还没有发出commit语句,但是oracle的dbwr进程已经将没有提交的数据写到数据文件中去了。

时间: 2024-11-05 15:49:19

redo 和 undo的相关文章

说说MySQL中的Redo log Undo log都在干啥

阅读目录(Content) 1 undo 1.1 undo是啥 1.2 undo参数 1.3 undo空间管理 2 redo 2.1 redo是啥 2.2 redo 参数 2.3 redo 空间管理 3 undo及redo如何记录事务 3.1 Undo + Redo事务的简化过程 3.2  IO影响 3.3 恢复 在数据库系统中,既有存放数据的文件,也有存放日志的文件.日志在内存中也是有缓存Log buffer,也有磁盘文件log file,本文主要描述存放日志的文件. MySQL中的日志文件,

redo、undo、binlog的区别

在MySQL中,redo.undo.binlog经常见,但很容易混淆这三者.   redo undo binlog 作用 保持事务的持久性 帮助事务回滚及MVCC的功能 进行Point-In-Time的恢复及主从复制环境的建立 产生主体 InnoDB MySQL MySQL 类型 物理日志 逻辑日志 逻辑日志 内容 每个页的修改 修改前的行数据 执行的SQL语句 每个事务的日志数量 事务执行中不断写入,多事务可并发写入 看修改的行数据量 事务提交后记一条SQL语句

09 redo and undo

本章提要-----------------------------------------------redo, undo 定义redo, undo 如何工作如何访问 redo, undo提交和回滚-----------------------------------------------redo: 用来重做(前滚)undo: 用来回滚(后滚) redo: 重做日志文件, 数据库的事务日志, online redo, archived log两类(都是磁盘文件)    如果数据库所在的机房掉电

【知识点整理】Oracle中NOLOGGING、APPEND、ARCHIVE和PARALLEL下,REDO、UNDO和执行速度的比较

[知识点整理]Oracle中NOLOGGING.APPEND.ARCHIVE和PARALLEL下,REDO.UNDO和执行速度的比较 1  BLOG文档结构图 2  前言部分 2.1  导读和注意事项 各位技术爱好者,看完本文后,你可以掌握如下的技能,也可以学到一些其它你所不知道的知识,~O(∩_∩)O~: ① 系统和会话级别的REDO和UNDO量的查询 ② NOLOGGING.APPEND.ARCHIVE和PARALLEL下,REDO.UNDO和执行速度的比较(重点)   Tips: ① 本文

InnoDB存储引擎介绍-(2)redo和undo学习

01 – Undo LogUndo Log 是为了实现事务的原子性,在MySQL数据库InnoDB存储引擎中,还用Undo Log来实现多版本并发控制(简称:MVCC). - 事务的原子性(Atomicity)事务中的所有操作,要么全部完成,要么不做任何操作,不能只做部分操作.如果在执行的过程中发生了错误,要回滚(Rollback)到事务开始前的状态,就像这个事务从来没有执行过. - 原理Undo Log的原理很简单,为了满足事务的原子性,在操作任何数据之前,首先将数据备份到一个地方(这个存储数

如何理解redo和undo

redo和undo的区别 redo--> undo-->datafileinsert一条记录时, 表跟undo的信息都会放进 redo 中, 在commit 或之前, redo 的信息会放进硬盘上. 故障时, redo 便可恢复那些已经commit 了的数据. redo->每次操作都先记录到redo日志中,当出现实例故障(像断电),导致数据未能更新到数据文件,则数据库重启时须redo,重新把数据更新到数据文件undo->记录更改前的一份copy,但你系统rollback时,把这份c

如何理解redo和undo的作用

目录 如何理解redo和undo的作用 redo undo UNDO和REDO的区别 如何理解redo和undo的作用 redo 重做日志(redo)包含所有数据产生的历史改变记录,是oracle在线或归档重做日志文件中记录的信息,一旦掉电或其他意外丢失数据,可以利用这些数据来重做事务,例如已经出现了丢失数据的情况,那么就可以利用redo来重放事务,通常用于实例恢复和介质恢复.日志挖掘和流(分析redo,捕获实时数据,传到远程数据库,并应用于远程数据库).Redo中保存的内容是改变向量,改变数据

redo与undo同时丢失后的恢复(没有备份)

系统停电导致redo和undo损坏 下面是恢复步骤,希望对大家有用. 当前状态是需要redo recover但是文件不存在或文件损坏经过redo的clear或不完全恢复后启动数据库的时候,出现ora报错,能后添加系统隐藏参数后和修改系统通过system为undotbs后成功启动数据库.1.redo丢失或损坏有如下两种常用的处理办法用CLEAR命令重建该日志文件非当前状态,而且已经归档SQL>alter database clear logfile group 3;如果是该日志组还没有归档,则需要

SQL Server 中日志的的作用(Redo和Undo)

简介 之前我已经写了一个关于SQL Server日志的简单系列文章.本篇文章会进一步挖掘日志背后的一些概念,原理以及作用.如果您没有看过我之前的文章,请参阅: 浅谈SQL Server中的事务日志(一)----事务日志的物理和逻辑构架 浅谈SQL Server中的事务日志(二)----事务日志在修改数据时的角色 浅谈SQL Server中的事务日志(三)----在简单恢复模式下日志的角色 浅谈SQL Server中的事务日志(四)----在完整恢复模式下日志的角色 浅谈SQL Server中的事

Redo,Undo,Binlog

https://www.jianshu.com/p/d829df873332 https://www.jianshu.com/p/57c510f4ec28 对于面向disk的数据库, 需要把数据先写入到page中,然后成批的flush到磁盘,所以在Page没有flush前需要有log能记录下page的state 这就是Redo,所以Redo是物理的,因为记录的是Page的具体变更,用Redo的目的是恢复出之前的page Redo本身也是要写disk,每个操作去写也不合适,所以Redo也有个buf