oracle的redo和undo,OracleUndoRedo通俗理解

OracleUndoRedo通俗理解以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

087bcf3a004c9a375dd74fce345fdbca.png

什么是REDO

REDO记录transaction logs 分为online和archived 以恢复为目的

比如 机器停电 那么在重起之后需要online redo logs去恢复系统到失败点

比如 磁盘坏了 需要用archived redo logs和online redo logs区恢复数据

比如 truncate一个表或其他的操作 想恢复到之前的状态 同样也需要

什么是UNDO

REDO 是为了重新实现你的操作 而UNDO相反 是为了撤销你做的操作 比如你得一个TRANSACTION执行失败了或你自己后悔了 则需要用 ROLLBACK命令回退到操作之前 回滚是在逻辑层面实现而不是物理层面 因为在一个多用户系统中 数据结构 blocks等都在时时变化 比如我们 INSERT一个数据 表的空间不够 扩展了一个新的EXTENT 我们的数据保存在这新的EXTENT里 其它用户随后也在这EXTENT里插入了数据 而此时我想ROLLBACK 那么显然物理上讲这EXTENT撤销是不可能的 因为这么做会影响其他用户的操作 所以 ROLLBACK是逻辑上回滚 比如对INSERT来说 那么ROLLBACK就是DELETE了

MIT 以前 常想当然地认为 一个大的TRANSACTION(比如大批量地INSERT数据)的MIT会花费时间比短的TRANSACTION长 而事实上是没有什么区别的

因为ORACLE在MIT之前已经把该写的东西写到DISK中了

我们MIT只是

产生一个SCN给我们TRANSACTION SCN简单理解就是给TRANSACTION排队 以便恢复和保持一致性

REDO写REDO到DISK中(LGWR 这就是log file sync) 记录SCN在ONLINE REDO LOG 当这一步发生时 我们可以说事实上已经提交了 这个TRANSACTION已经结束(在V$TRANSACTION里消失了)

SESSION所拥有的LOCK(V$LOCK)被释放

Block Cleanout(这个问题是产生ORA : snapshot too old的根本原因) ROLLBACK ROLLBACK和MIT正好相反 ROLLBACK的时间和TRANSACTION的大小有直接关系 因为ROLLBACK必须物理上恢复数据 MIT之所以快 是因为ORACLE在MIT之前已经作了很多工作(产生UNDO 修改BLOCK REDO LATCH分配) ROLLBACK慢也是基于相同的原因

UNDO表空间用于存放UNDO数据 当执行DML操作时 Oracle

UNDO数据的作用 当用户执行DML操作修改数据时 UNDO数据被存放在UNDO段 而新数据则被存放到数据段中 如果事务操作存在问题 就需要回退事务 以取消事物变化

例如 执行完UPDATE emp SET sal= WHERE empno= 后 发现应该修改雇员 的工资 而不是 此时应该执行ROLLBACK语句

读一致性

用户检索数据时 ORACLE总是使用户只能看到被提交过的数据 这是由Oracle自动提供的 当用户修改数据 但是没有提交时 另外一个用户使用select语句查找该值时 该值就是从undo表空间中取得的

事务恢复

事务恢复是例程恢复的一部分 它是由Oracle Server自动完成的 如果在数据库运行过程中出线历程失败 那么当启动Oracle Server时 后台进程SMON会自动执行例程恢复 执行例程恢复时 Oracle会重做所有未应用的记录 然后打开数据库 回退未提交事务

倒叙查询

倒叙查询用于取得某一特定时间点的数据库数据

UNDO_MANAGEMENT

使用初始化参数用于指定UNDO数据的管理方式 如果使用自动管理模式 必须设置该参数为AUTO 此时采用UNDO表空间管理UNDO数据 如果使用手工管理模式 必须设置该值为MANUAl 此时采用回滚段管理UNDO数据

UNDO_TABLESPACE

用于指定例程所要使用的UNDO表空间 使用自动UNDO管理模式时 通过配置该参数可以指定例程所要使用的UNDO表空间

使用RAC结构时 必须为每个例程配置一个独立的UNDO表空间

UNDO_RETENTION

该参数用于控制UNDO数据的最大保留时间 其默认值为 秒 该值时倒叙查询可以查看到的最早时间点 lishixinzhi/Article/program/Oracle/201311/17025

分页:123

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值