加载中…
个人资料
冬瓜
冬瓜
  • 博客等级:
  • 博客积分:0
  • 博客访问:35,156
  • 关注人气:4
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
相关博文
推荐博文
正文 字体大小:

在Oracle数据库中,undo的作用是什么?

(2014-03-27 22:43:53)
标签:

undo

数据库中undo的作用

scn是什么

itl是什么

一致性读

it

分类: 数据库

主要作用有三个:提供一致性读(Consistent Read)

                  回滚事务(RollbackTransaction)

                  实例恢复(Instance Recovery)

 

提供一致性读:是相对脏读而言,就是当你查询的同时有另一个人来修改数据,此时你查询出来的结果是

                  修改前的,这就是一致性读,并且该一致性读是在没有阻塞用户的DML的前提下实现的。

                  这主要是靠SCN和ITL来实现的。

                   SCN号(系统修改号,如果有多个ITL槽,则为其中最大的那个SCN号)。

                   ITL(Interested TransactionList)是Oracle数据块内部的一个组成部分,用来记录该

                   块所有发生的事务,一个itl可以看作是一个记录,在一个时间,可以记录一个事务(包

                   括提交或者未提交事务)。当然,如果这个事务已经提交,那么这个itl的位置就可以被

                   反复使用了,因为itl类似记录,所以,有的时候也叫itl槽位。

 

回滚事务:则是在执行DML以后,发出rollback命令撤销DML所作的变化。Oracle利用记录在ITL槽里记

            录的undo块的地址找到该undo块,然后从中取出变化前的值,并放入数据块中,从而对事务所作

            的  变化进行回滚。

 

实例恢复:则是在SMON进程完成前滚并打开数据库以后发生。SMON进程会去查看undo segment头部(所谓头部

           就是undo segment里的第一个数据块)记录的事务表(每个事务在使用undo块时,首先要在该

           undo块所在的undo segment的头部记录一个条目,该条目里记录了该事务相关的信息,其中包括

           是否提交等),将其中既没有提交也没有回滚,而是在实例崩溃时被异常终止的事务全部回滚。

 

 

 

0

阅读 评论 收藏 转载 喜欢 打印举报/Report
  • 评论加载中,请稍候...
发评论

    发评论

    以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

      

    新浪BLOG意见反馈留言板 电话:4000520066 提示音后按1键(按当地市话标准计费) 欢迎批评指正

    新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 会员注册 | 产品答疑

    新浪公司 版权所有