怎么理解Oracle回滚与撤销


本篇内容介绍了“怎么理解Oracle回滚与撤销”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!Oracle性能优化中,有一个性能指标为平均事务回滚率(Rollback per Transaction),用来衡量数据库的提交与回滚率,计算公式为:Round(User rollbacks /(user commit + user rollbacks),4) X 100%这个指标应该接近于0,如果指标过高说明数据库的回滚过多关于回滚段存储的内容Insert 操作:回滚段只需要记录插入记录的rowid,如果回退,只需要将该记录根据rowid删除即可Update操作:回滚段只需要记录被更新字段的旧值即可(前镜像),回退时通过旧值覆盖新值即可完成回滚Delete操作:Oracle则必需记录整条记录,在回滚时,Oracle通过一个反射操作恢复删除的数据通过以上信息可以得出结论,insert 产生的undo信息最少,update居中,delete产生的undo最多。当一个大的delete操作失败或者回滚时,总需要很长的时间,并且会有大量的Redo产生,所以通常在进行大规模数据删除时,推荐通过分批删除分批提交,以减少对回滚段的占用和冲击回滚段的作用:事物回滚、事物恢复、一致性读Oracle通过锁的机制实现并发控制,通过多版本模型来进行并发数据访问。通过多版本架构,Oracle实现了读取和写入的分离,使得写不阻塞读,读不阻塞修改。多版本模型在Oracle是通过一致性读来实现的Oracle不允许读取未提交的数据,并且保证读取的数据来自同一时间点从免费云主机域名Oracle 9I开始引入自动UNDO表空间管理,相关的参数有 undo_management 定义数据库使用的回滚段是否使用自动管理模式,有auto和manual 2 个值,undo_tablespace 定义在自动管理模式下,使用哪个undo表空间,undo_retention定义当回滚段变得非激活(INACTIVE)之后,回滚段中的数据在被覆盖前保留的时间,单位为秒缺省Oracle初始化10个回滚段,从v$rollname视图中可以查看出自动 创建的回滚段情况默认undo_retetion参数并不一定可以保存所设置时间内的镜前像,如果不希望被覆盖,那么需要设置undo表空间的属性为guarantee,命令如下:alter tablespace undotbs1 retention gurarantee;Oracle 10g推出 In Memory Undo ,数据库在共享池中分配空间用于存储undo信息,它与pvrs紧密相关。
“怎么理解Oracle回滚与撤销”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注百云网站,小编将为大家输出更多高质量的实用文章!

相关推荐: 数据库的共享模式与专有模式是什么

这篇文章主要介绍“数据库的共享模式与专有模式是什么”,在日常操作中,相信很多人在数据库的共享模式与专有模式是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”数据库的共享模式与专有模式是什么”的疑惑有所帮助!接下来,请跟着小编一…

免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。

(0)
打赏 微信扫一扫 微信扫一扫
上一篇 01/13 11:01
下一篇 01/13 11:30