9.2.5 重做日志文件的清空

我们不仅可以删除重做日志组和日志成员,还可以清空重做日志文件的内容。在数据库的运行过程中,如果由于重做日志文件的损坏而导致归档操作无法进行,数据库服务器的运行最终将停止,在这种情况下,可以将重做日志文件的内容全部清空。

清空重做日志文件的操作可以在不关闭数据库的情况下进行,即使数据库中只有两个日志组,或者该重做日志所属日志组的状态为“CURRENT”。

清空重做日志文件的命令是ALTER DATABASE,在这条命令中通过CLEAR LOGFILE子句指定要清空的日志组,执行清空操作时一个重做日志组中的所有日志成员都将被清空。例如,下面的语句用于清空重做日志组3中的所有日志成员:


SQL>ALTER DATABASE

CLEAR LOGFILE GROUP 3;


如果要清空的重做日志组尚未归档,则需要使用UNARCHIEVED关键字。例如:


SQL>ALTER DATABASE

CLEAR UNARCHIVED LOGFILE GROUP 3;


以上语句在清空尚未归档的重做日志文件时,避免对其进行归档。尽管没有归档,但被清空的重做日志文件可再次使用了。需要注意的是,如果清空了尚未归档的重做日志文件,应该对数据库进行一次备份。

如果一个重做日志组被清空,而在进行数据库恢复时恰好需要这个组的重做日志文件,那么恢复操作将无法进行。数据库服务器将把这种无法进行的恢复情况写入警告文件。