ITPub博客

首页 > 数据库 > Oracle > UNDO介绍

UNDO介绍

Oracle 作者:stockDB 时间:2015-07-06 12:39:51 0 删除 编辑
当对表中数据进行更改时,会把表中块的前映像放入到undo段中

UNDO主要用于以下功能:
1.读一致性
2.恢复数据库
3.rollback事物
4.提供flashback query等特性支持

看以下的流程图可以看出数据库是如何保持读一致性的:

当我们执行一个事务的时候,oracle会分配一个SCN编号,这个编号是递增的。下一个事务的编号一定比当前事务的编号大。上图中执行第一个事务分配的编号为10023,在这个事务执行的过程中,另一事务对SCN 编号为10008和10021的数据块进行了修改。用来替换的数据块SCN编号为10024 ,而被替换掉的数据块会被保存到undo 上面。当第一个事务执行到被修改过的数据块时,发现10024比10023大,这个时候就会到undo segment上找比自己SCN号小的数据块进行读,于是发找到了SCN号为10008和10021两个块。这样就有效的保证了读一致性。

  当然,会有一种特殊情况,也就是undo segment 太小,最多放100条数据,可一下子来了120条数据,那么最先写入的20条数据被最后写入的20条数据覆盖。这个时候就会报错,这也是为什么要对数据据进行调优的原因。


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

上一篇: oracle internal收集
下一篇: UNDO研究
请登录后发表评论 登录
全部评论

注册时间:2015-06-15

  • 博文量
    35
  • 访问量
    24297