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