Redo 和Undo的区别和联系 详细解释

Redo和Undo
  • Redo及其作用
  • Undo及其作用
  • Redo与Undo的关系
  • 提交和回滚处理
  • 基于LogMiner的日志分析

 

1

1.1  Redo及其作用
 

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

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

    • Log Buffer
    • LGWR
    • 联机重做日志文件和归档日志文件

1.2 Redo数据量的测量

  1.2.1用SQL*Plus内置的AUTORACE功能统计(只能针对简单的DML操作,无法统计存储过程调用等复杂操作的日志信息):

  1. set autotrace on statistics   
  2. update big_table   
  3.   set object_name=lower(object_name)   
  4.   where rownum<10;   


 

    1.2.2.通过动态性能视图v$mystat检索。例如:

 

  1. select a.name, b.value   
  2.   from v$statname a, v$mystat b   
  3.   where a.statistic# = b.statistic#   
  4.   and lower(a.namelike 'redo size';   


 

2  Undo及其作用
 
 

 

2.2.1 Undo的作用是:
回滚操作;
支持读一致性;
恢复失败的事务。
2.2.2 Undo的实现是通过Undo表空间内的undo段来实现的。每个事务只被分配一个undo段,undo段可以服务于多个事务。
2.2.3Undo机制只是逻辑地把数据恢复到修改前的状态,而不是物理地恢复。

 

语句中使用以下动态性能视图查询当前事务使用的undo块数:
V$MYSTAT:取得会话ID;
V$SESSION:获取事务地址;
V$TRANSACTION:找出事务使用的undo块数。
事务提交或回滚时会释放undo块占用的空间。
 
  1. select used_ublk   
  2. from v$transaction  
  3. where addr = (  
  4.    select taddr  
  5.    from v$session  
  6.    where sid = (  
  7.        select sid  
  8.        from v$mystat  
  9.        where rownum = 1  
  10.       )  
  11.    );  
9.3   Redo与Undo的比较 

 

UndoRedo
记录怎样还原修改怎样创建修改
用于回滚、读一致性前滚、数据库修改
存储于Undo段Redo日志文件
保护多用户系统中的读一致性损失的数据

 

3.4   undo管理
管理目标是避免出现两种错误:
vORA-01650: unable to extend rollback segment
vORA-01555: snapshot too old
管理方式落实为正确配置三个参数和一个还原表空间属性:
UNDO_MANAGEMENT
UNDO_TABLESPACE
UNDO_RETENTION
RETENTION GUARANTEE
 
9.5  提交和回滚处理
 
commit操作需要的时间很“平”,与事务的大小没有直接关系。
rollback操作所需的时间与事务所修改的数据量直接相关。
因此在设计事务时,不要考虑事务的大小和多少,而应以所执行的操作是否构成一个逻辑工作单元作依据。
 
提交前后完成的操作
 
提交前可能完成的操作
在SGA中生成UNDO块
在SGA中生成已修改的数据块
在SGA中生成前两项对应的redo日志
如果需要,前面的某些数据可能已经刷新输出到磁盘
得到所需的所有锁
提交时要完成的操作
为事务生成SCN
LGWR把剩余所有缓存重做日志和SCN写入日志文件
释放锁
对缓冲区中的数据块进行块清理
 
 
回滚前后完成的操作
 
v 回滚前可能完成的操作
在SGA中生成UNDO块
在SGA中生成已修改的数据块
在SGA中生成前两项对应的redo日志
如果需要,前面的某些数据可能已经刷新输出到磁盘
得到所需的所有锁
v 回滚时要完成的操作
撤销已做的所有修改
释放锁
  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值