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

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

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

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

你可能感兴趣的:(按说commit后,undo里还保存着变更前的数据,为什么不能rollback了?)