在数据库恢复操作中,最重要的结构就是联机重做日志,它包含两个或者多个预先分批好的文件,在这些文件中存储自文件产生以来对数据库所做的所有操作。oracle数据库中每一个实例都有一个相关的联机重做日志,目的是保护数据库以防实例失败。
联机重做日志文件中填满了重做记录。重做记录又称为重做条目,它由一组修改向量组成,其中每个修改向量都是用来描述对数据库中的每个块所做的一种修改。
数据库的联机重做日志包含两个或者更多个联机重做日志文件。oracle需要至少两个这种文件,以便确保其中一个一直用于写入,另一个用于存档。LGWR(oracle后台进程日志写入程序)以循环方式填写联机重做日志文件。当当前的联机重做日志文件填满时,LGWR会开始向下一个联机重做日志文件填写。当最后一个可用的联机重做日志文件也被填满时,LGWR会返回到第一个联机重做日志文件并进行填写,如此循环。
可以创建联机重做日志文件和联机重做日志文件组,并可以修改、取消和删除日志文件(组),具体命令和参数请参阅相关资料。
当LGWR停止向其中某个联机重做日志组写入而开始向另一个联机重做日志文件组写入时,将发生日志切换。默认情况下,当当前的联机重做日志组填满时将发生自动日志切换。当然也可以强制实行日志切换,使当前活动组变成非活动组以便对该日志组实施操作维护。实施强制日志切换,必须拥有alter system权限。若有这样的权限,可以使用带switch logfile子句的alter system语句就可以强制实施日志切换了,如alter system switch logfile;
当打开数据库时,联机重做日志文件也许已经受到损坏,并且因为不能继续存档最终停止数据库的各项活动。这样的情况下,可以不用关闭数据库而使用alter database clear logfile语句重新初始化联机重做日志文件。如 alter database clear logfile group 3;
查看联机重做日志信息,可以使用下面的视图。V$LOG、V$LOGFILE、V$LOG_HISTORY。
如select * from V$LOGFILE,显示数据如下:
GROUP# STATUS TYPE MEMBER
1 ONLINE D:/ORACLE9.11/ORADATA/USP/REDO01.LOG
2 STALE ONLINE D:/ORACLE9.11/ORADATA/USP/REDO02.LOG
3 STALE ONLINE D:/ORACLE9.11/ORADATA/USP/REDO03.LOG
其中status的值为空的记录说明当前数据库正在使用该日志文件。