redo->记录所有操作,用于恢复(redo records all the database transaction used for recovery)
Redo的作用是恢复已提交的事务,从而保证无论在介质失败还是实例失败时,都可以恢复用户已提交的事务,使数据库达到一致状态。
Redo功能的实现依赖于以下三个组件:
log buffer
lgwr
联机重做日志文件和归档日志文件
undo->记录所有的前印象,用于回滚(undo is used to store uncommited data infor used for rollback)
Undo的作用是:
–回滚操作;
–支持读一致性;
–恢复失败的事务。
Undo的实现是通过Undo表空间内的undo段来实现的。每个事务只被分配一个undo段,undo段可以服务于多个事务。
Undo机制只是逻辑地把数据恢复到修改前的状态,而不是物理地恢复。
redo的原因是:每次commit时,将数据的修改立即写到online redo中,但是并不一定同时将该数据的修改写到数据文件中。因为该数据已经提交,但是只存在联机日志文件中,所以在恢复时需要将数据从联机日志文件中找出来,重新应用一下,使已经更改数据在数据文件中也改过来!
undo的原因是:在oracle正常运行时,为了提高效率,假如用户还没有commit,但是空闲内存不多时,会由DBWR进程将脏块写入到数据文件中,以便腾出宝贵的内存供其它进程使用。这就是需要UNDO的原因。因为还没有发出commit语句,但是oracle的dbwr进程已经将没有提交的数据写到数据文件中去了。
时间: 2024-11-05 15:49:19