第二十四讲--Undo段及区的状态和使用

Undo的作用:oracle开始一个事务的时候使用undo表空间。

假如执行一个delete语句,oracle会把删除前的数据放到undo表空间的undo段里面。一个事务修改的block越多则占用的undo段越多。

Undo的两大作用:

1.Oracle的事务有时需要回滚,回滚的作用就是把事务修改前的数据拷贝回来,所以需要修改前的数据,修改前的数据就放在undo表空间里面;

2.B会话要读数据的时候发现数据被A会话修改了,但是A会话的事务没有提交,B会话就会在buffer cache里申请一个buffer,然后把要读的数据从undo段写到buffer里,然后读buffer,这个buffer就叫做cr块。B会话通过构造cr块达到一致性读取数据的目的。保证读取的永远是已提交的数据,不会读出未提交的数据。

3.实例崩溃恢复。实例崩溃以后的恢复分为两步:1.前滚,把崩溃前的脏buffer尽量多的构造出来。2.回滚,前滚出来的脏buffer可能是未提交的事务造成的,这些脏buffer就要回滚,回滚就要用到undo表空间。

 

Undo段中区的状态:

1.      free;

2.      expired,inactive区过了undo_retention参数设定的时间就会变成expired状态;

3.      inactive,区中的事务已经提交。为了保证某功能的实现,oracle希望已提交的事务所对应的undo表空间里undo段的区尽量的在保持一段时间,也就是oracle希望inactive这个区的在保持一段时间,undo_retention,900秒;


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值