1 归档日志概览
Oracle数据库服务器将在线重做日志组视为循环缓冲区,在其中存储事务信息,填充一个组,然后转移到下一个组。在写入所有组之后,Oracle数据库服务器开始覆盖第一个日志组中的信息。
要配置数据库以实现最大的可恢复性,必须指示Oracle数据库服务器在允许覆盖在线重做日志组之前创建一个副本。这些副本称为归档重做日志文件。
创建归档重做日志文件:
- 为归档的重做日志文件指定命名规则。
- 指定一个或多个目的地用于存储归档的重做日志文件。
- 将数据库置于ARCHIVELOG模式。
注意:如果使用快速恢复区域,步骤1和2是不必要的。
在将数据库置于ARCHIVELOG模式之前,存放归档的位置应该已经存在。当一个目录被指定为存放归档的目的地时,在目录名的末尾应该有一个斜杠。
开启归档模式:
数据库干净的关闭,在挂载状态下设置:
shutdown immediate
startup mount
alter database archivelog;
alter database open;
如果数据库处于NOARCHIVELOG模式(默认模式),则只能在恢复到最后一次备份之前。在此备份之后所做的所有事务都将丢失。
在ARCHIVELOG模式下,恢复直到最近的一次提交。大多数生产数据库都在ARCHIVELOG模式下运行。
注意:在切换到ARCHIVELOG模式后备份数据库,因为只有在该模式下进行的第一次备份才能恢复数据库。
2 归档模式与非归档模式
ARCn是一个可选的后台进程。它对于磁盘损坏后恢复数据库至关重要。当在线重做日志组被填满时,Oracle数据库服务器开始向下一个在线重做日志组写入。从一个在线重做日志组切换到另一个日志组的过程称为日志切换。ARCn进程在每个日志开关上启动对已填充日志组的归档。它会在重用日志组之前自动归档在线重做日志组,以便保留对数据库所做的所有更改。这样,即使磁盘驱动器损坏,也可以将数据库恢复到故障点。
DBA必须做出的一个重要决策是,是将数据库配置为在ARCHIVELOG模式下操作,还是在NOARCHIVELOG模式下操作。
在NOARCHIVELOG模式下,每当发生日志切换时,都会覆盖在线重做日志文件。
在ARCHIVELOG模式下,必须对已填充的在线重做日志文件的非活动组进行归档,然后才能再次使用它们。
请注意ARCHIVELOG模式对于大多数备份策略都是必不可少的。
如果归档日志所在磁盘已满或无法写入,数据库最终将停止。空间释放后,数据库将恢复操作。
3 归档日志命名
每个归档日志文件必须有一个惟一的名称,以避免覆盖较旧的日志文件为了帮助创建唯一的文件名,Oracle数据库允许几个通配符在名称格式:
%s:将日志序列号作为文件名的一部分
%t:包含线程号作为文件名的一部分
%r:包括resetlogs ID,以确保归档日志文件名保持惟一(即使在某些重置日志序列号的高级恢复技术之后)
%d:将数据库ID作为文件名的一部分
作为最佳实践,格式应该包括%s、%t和%r(如果多个数据库共享相同的归档日志目的地,也可以包括%d)。
默认情况下,如果启用了快速恢复区域,则将USE_DB_RECOVERY_FILE_DEST指定为归档重做日志文件目的地。归档的重做日志文件可以写到多达10个不同的目的地。目的地可以是本地(目录)或远程(备用数据库的Oracle Net别名)。