按说commit后,undo里还保存着变更前的数据,为什么不能rollback了?

本文深入探讨了Oracle数据库中undo表空间的作用及事务槽机制,解释了commit和rollback的区别,以及如何通过 flashbackquery 功能利用undo数据。重点阐述了事务槽标记对回滚段的影响,并详细说明了数据库如何确保事务的提交与回滚。

commit 以后,undo里面的数据是可以被覆盖的,无法保证能rollback。
undo 虽然还保存着变更前的数据, 但这些数据的“事物槽”信息已经被更改了,  所以不能ROLLBACK, 想利用这些数据可以用flashback query !

这个“事务槽” 可以这样理解:  当事物没提交的时候 “事务槽”的状态就标记为“没提交”, 那么这块回滚段就不能被覆盖, 如果commit了那么“事物槽”的状态就被标记为“已经提交”那么这个回滚段就可以被覆盖了,  具体的标记内容和时机, 你可以dump 一下就非常清楚了!

是ORACLE硬性规定的,若什么时候都可以回滚,那如何确保提交?

转载于:https://my.oschina.net/u/138995/blog/204129

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值