9.3 归档日志的管理
对于实际的生产系统来说,重做日志文件的归档是非常重要的。归档日志管理主要包括修改数据库的日志模式、指定归档文件的位置和名称、手工对重做日志文件进行归档等内容。
9.3.1 数据库的日志模式
数据库服务器有两种日志模式:归档模式和非归档模式。在非归档模式下,当一个重做日志组被写满时,LGWR进程将自动切换到下一个重做日志组,这个重做日志组中以前的重做日志将被覆盖。而在归档模式下,每个重做日志组在被覆盖之前都要进行归档,生成一个归档日志文件。
重做日志文件的归档对于数据库的安全有着重要的意义:如果数据库被破坏,利用重做日志和归档日志可以进行完全恢复。如果没有对重做日志文件进行归档,那么只能进行不完全恢复。
现在举个例子来说明归档日志的作用。假设某数据库有三个重做日志组,在周一的时候数据库管理员对数据库做了一次完全备份,以后每天都做一次增量备份,到周四的时候数据库被破坏。数据库管理员首先可以利用最近的一次完全备份将数据库恢复到周一时的状态,然后依次利用后面的增量备份把数据库一直恢复到周三时的状态。
如果数据库处于非归档模式下,那么周三到周四的数据将无法恢复。如果数据库处于归档模式下,在这段时间只要发生过日志切换,就会产生归档日志文件,数据库管理员可以利用归档日志和联机重做日志将数据库恢复到发生故障之前的状态。由此可见,在进行数据的恢复时,最后一段时间没有被备份的数据完全是依靠重做日志来恢复的。
在默认情况下,数据库初始处于非归档模式下,数据库管理员可以将数据库在两种日志模式之间进行切换。如果要确定数据库当前所处的日志模式,可以执行命令ARCHIVE LOG LIST。以下是该命令执行的情况:
SQL>ARCHIVE LOG LIST;
数据库日志模式 存档模式
自动存档 启用
存档终点/u01/base/archive
最早的概要日志序列 36
下一个存档日志序列 37
当前日志序列 37
以上结果表明数据库当前处于归档模式下,并且启动了自动归档功能。
数据库的日志模式还可以通过以下SELECT语句获得:
SQL>SELECT log_mode FROM v$database;