问题描述
老师好,因为听到过这么一个故事,某dba在检修升级快结束时发现一个超大事物操作错了,需要rollback,如果此时rollback时间肯定来不及,于是该dba直接shutdown abort了。于此产生一些疑问
1:超大事物commit前,是否一定不写入redo日志。
2:insert,update,delete哪种操作在rollback时用时最少,为什么。
3:insert,update,delete,在rollback一半宕机,恢复数据库时,数据库是什么状态,数据库在恢复时具体做了什么操作。
4.故事中的操作在极端情况下是否可行。
个人理解
1.commit前感觉应该不写入redo。
2.insert用时最少,update,delete用时一样,因为insert不需undo回写。
3.应该恢复到dml操作之前状态(事物一致性),如果commit前不写redo,那数据库对dml操作可以无视。
谢谢老师
专家解答
1、commit前,也是有可能写入redo的,这个可以参考重做日志缓冲区中的内容写到redo的几个条件。
2、insert,update和delete的Rollback时间,时间和事务的大小有关,相比起来,insert产生的undo确实是要少一些的,因为update和delete都是保存数据修改前的映象的,所以生成的undo会多一些,rollback的时间上也会相应的长一点。
3、Rollback一半宕机,open的时候数据库会继续回滚。
4、故事中的这个场景,虽然是可行的,但是在数据库重新启动的时候数据库就会进行一系列的前滚以及回滚操作。但是abort还是不建议用,这样可能会导致数据库无法启动等问题。
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。
评论
相关阅读
Oracle RAC 一键安装翻车?手把手教你如何排错!
Lucifer三思而后行
563次阅读
2025-04-15 17:24:06
【纯干货】Oracle 19C RU 19.27 发布,如何快速升级和安装?
Lucifer三思而后行
487次阅读
2025-04-18 14:18:38
Oracle SQL 执行计划分析与优化指南
Digital Observer
462次阅读
2025-04-01 11:08:44
XTTS跨版本迁移升级方案(11g to 19c RAC for Linux)
zwtian
455次阅读
2025-04-08 09:12:48
墨天轮个人数说知识点合集
JiekeXu
454次阅读
2025-04-01 15:56:03
【ORACLE】记录一些ORACLE的merge into语句的BUG
DarkAthena
442次阅读
2025-04-22 00:20:37
Oracle数据库一键巡检并生成HTML结果,免费脚本速来下载!
陈举超
429次阅读
2025-04-20 10:07:02
【ORACLE】你以为的真的是你以为的么?--ORA-38104: Columns referenced in the ON Clause cannot be updated
DarkAthena
417次阅读
2025-04-22 00:13:51
Oracle 19c RAC更换IP实战,运维必看!
szrsu
401次阅读
2025-04-08 23:57:08
【活动】分享你的压箱底干货文档,三篇解锁进阶奖励!
墨天轮编辑部
374次阅读
2025-04-17 17:02:24