Oracle数据库中的恢复机制采用了转储和登记日志文件两个技术。
Oracle向数据库管理员(DBA)提供了多种转储后备副本的方法,如文件拷贝、利用Oracle的Export实用程序,用SQL命令spool以及自己编程实现等。相应地,Oracle也提供了多种重装后备副本的方法,如文件拷贝、利用Oracle的Import实用程序、利用SQL*Loader以及自己编程实现等。
在Oracle的早期版本中,日志文件以数据块为单位,也就是说,Oracle的恢复操作不是基于操作,而是基于数据块的。Oracle将更新前的旧值与更新后的新值分别放在两个不同的日志文件中。记录数据库更新前的旧值的日志文件称为数据库前像文件(Befor Image,简称BI文件),记录数据库更新后的新值的日志文件称为数据库的后像文件(After Image,简称AI文件)。由于BI文件关系到能否将数据库恢复到一致性状态,因此BI文件是必须的。而AI文件的作用是减少必须重新运行的事务程序,尽可能多的恢复数据库,所以在Oracle中AI文件是任选的。日志文件是十分占据空间的,为节省存储空间和操作时间,DBA可以不配置AI文件。没有AI文件,恢复机制进行故障恢复时只能执行UNDO处理,不能执行REDO处理。
Oracle为了能够在出现故障时更有效地恢复数据,也为了解决读“脏”数据问题,提供了REDO日志文件和回滚段(Rollback Segment).REDO日志文件中记录了被更新数据的前像和后像,设在数据库缓冲区中的回滚段记录更新数据的前像。在利用日志文件进行故障恢复时,为减少扫描日志文件的遍数,Oracle首先扫描REDO日志文件,重做所有操作,包括未正常提交的事务的操作,然后再根据回滚段中的数据,撤销未正常提交的事务的操作。