oracle中的撤销是什么意思,《深入解析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表空间,可以有效减少问题的发生率

本章还有很多篇幅是作者用转储方式探索回滚段相关原理的

看了一遍……只看明白一部分而已……以后有待再次深入

距离第一阶段完结的日子不远了 ^_^

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值