《深入解析Oracle》第八章,回滚与撤销

又隔了相当长的一段时间才写总结
第七章的Redo,是用于解决数据库故障的
而本章的内容,是用于支持数据库读一致和可撤销操作的
可以将未修改后提交的数据恢复到修改前

在某个事务为完成提交之前
用户可以撤销此次此事务内的修改
而事务进行中出现问题的话,Oracle也会自动回滚,恢复原样
为了实现这种功能,类似Redo,Oracle用Undo来记录相关信息
insert、update、delete的相关信息记录在Undo表空间的回滚段内
记录的信息量,insert最少(只需添加记录的rowid)
update其次(记录所修改的旧值),delete最多(记录所删除记录的整行数据)
如一事务的修改还未提交,另一事务所查询的数值会有Undo信息提供
个人以前曾总结过UNDO_RETENTION(尽量达到的保存时长)参数
和Undo表空间的GUARANTEE(是否对保存时长强制保证)选项
V$ROLLSTAT和V$ROLLNAME可以用来查询数据库当前回滚段的相关信息
当事务提交后,Oracle一般会清除事务的相关数据,此操作成为块清除
块清除分为快速块清除(如数据块未写回数据文件,事务提交后便立即清除ITL、锁等相关信息)
延时块清除(数据块已写回,清除作业会在下次访问数据块的时候进行)

以前还了解过另一个和Undo有关的数据库恢复特性,闪回
此特性是从9i开始提供的
如果相关的Undo信息还没有被后来的事务所覆盖
用户便可以通过闪回查询对数据库进行极为简便的恢复操作
另外,Oracle11g中
可以优化Undo表空间备份(跳过已提交事务的Undo信息备份),还可以对Undo进行归档保存

Undo回滚段的使用,可能会引发ORA-01555错误(回滚段被重用,相关Undo信息被覆盖)
适当设置UNDO_RETENTION值,GUARANTEE功能,以及Undo表空间,可以有效减少问题的发生率

本章还有很多篇幅是作者用转储方式探索回滚段相关原理的
看了一遍……只看明白一部分而已……以后有待再次深入
距离第一阶段完结的日子不远了 ^_^

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/556359/viewspace-589339/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/556359/viewspace-589339/

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值