深入浅出Oracle学习笔记:Undo

系统 1603 0

 

  undo的作用是:解决oracle多用户读写一致性,以及操作可撤销或者回滚。

 

1.undo表空间是从10g开始进行自动管理的,几个参数如下:

  undo_management:回滚段手动管理还是自动管理

  undo_tablespace:为undo单独定义的表空间;在自动管理模式下,使用哪个表空间

  undo_retention:在自动管理模式下,回滚段在非活动状态下,回滚段中的数据被覆盖前,系统的保留时间(秒)。

 

2.回滚段存储的内容

   insert操作:只记录插入记录的rowid,回滚时,只需要根据该rowid删除记录即可

   update操作:记录要更新字段的镜像,回滚时,通过该镜像,覆盖之前的值

   delete操作:完整地记录一条数据,回滚时,通过一个反向操作恢复数据。

      通过上面比较,delete的花销最大。所以,一个批量删除失败,回滚会花销比较长的时间。同时,回滚的操作

 还要记录redo日志。

 

3.oracle读写一致性

             深入浅出Oracle学习笔记:Undo

    用户A、B;一个在update,一个在select;

    如果(1):Ty< T<Tz<Tx , 即在查询中,数据有更新;但在update 的commit前,查询结束;虽然有update操作,但select依然

                可以通过回滚段的数据镜像查询出结果,这样数据就保持了读取一致性。

    如果(2):Ty< T<Tx<Tz ,在查询中,数据有更新;但在update 的commit前,查询还未结束;这就导致select的查询回滚段的数据

               镜像有可能被覆盖,进而查询失败;oracle提示ora-01555错误。

 

   oracle为解决ora-01555问题:

     从10g 开始,oracle 对undo_retention 参数进行了调整。默认情况下,这个参数是启用的。oracle自动调整回滚段数据保留时间;

  当然,如果undo表空间不足,系统自动满足长时间的查询,而不需要手动调整。

     同时,oracle还对undo表空间增加了guaratee控制,即用户可以指定undo表空间必须满足undo_retention 限制。

     >alter tablespace undotbs1    retention guaratee;

  

深入浅出Oracle学习笔记:Undo


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论