用户手动commit后,都是已提交的数据,只是有些数据还没有被写人磁盘,在缓存中等待写盘,而三分之一满了和日志文件达到一兆时会自动触发写盘。而当数据已提交却未被写入磁盘的时候突然断电等,就涉及到一个事务,事务具有一致性,所以已提交,没写盘的需要被恢复出来,将undo块中的数据恢复到内存中,再进行写盘。已提交的要保证写如磁盘,未提交的被放弃。回退未提交的事务是将数据恢复成你修改之前的数据。
COMMIT命令用于把事务所做的修改保存到数据库,它把上一个COMMIT或ROLLBACK命令之后的全部事务都保存到数据库。
undo表空间中会自动分配undo段,这些undo段用来保存事务中的DML语句的undo信息,也就是来保存数据在被修改之前的值。
undo表空间的作用:
Oracle开始一个事务,当要修改数据时,会先将修改前的数据保存到undo表空间的undo段中。保存这些修改前的数据的原因下面这些场合需要undo数据:1)事务的回滚;2)实例恢复(回滚);3)一致性读时需要构造CR块;
本文解释了Oracle数据库中事务提交后数据暂存缓存、undo表空间的作用,包括事务回滚、实例恢复和一致性读的场景。重点讲解了undo段的使用以及COMMIT命令如何确保数据持久化,以及在断电等情况下的事务恢复策略。

1155

被折叠的 条评论
为什么被折叠?



