数据库打开时,重做日志文件可能会损坏,并最终停止数据库活动,因为归档无法继续。在这种情况下,ALTER DATABASE CLEAR LOGFILE语句可用于在不关闭数据库的情况下重新初始化文件。
以下语句清除重做日志组编号3中的日志文件:
ALTER DATABASE CLEAR LOGFILE GROUP 3;
此语句克服了两种无法删除重做日志的情况:
- 如果只有两个日志组
- 损坏的重做日志文件属于当前组
如果损坏的重做日志文件尚未归档,请在语句中使用UNARCHIVED关键字。
ALTER DATABASE CLEAR UNARCHIVED LOGFILE GROUP 3;
此语句清除损坏的重做日志并避免存档它们。已清除的重做日志即使未归档也可供使用。
如果清除恢复备份所需的日志文件,则无法再从该备份恢复。数据库在警报日志中写入一条消息,描述无法恢复的备份。
如果清除未归档的重做日志文件,则应该对数据库进行另一次备份。
要清除使脱机表空间联机所需的未归档重做日志,请使用ALTER DATABASE CLEAR LOGFILE语句中的UNRECOVERABLE DATAFILE子句。
如果清除使脱机表空间联机所需的重做日志,则无法再次使表空间联机。您必须删除表空间或执行不完整的恢复。请注意,正常脱机的表空间不需要恢复。
参考资料
https://docs.oracle.com/cd/E11882_01/server.112/e25494/onlineredo.htm#ADMIN11328