Oracle使用"归档日志文件"来提前一步保存这些即将被覆盖掉的重做日志记录。归档日志文件默认情况下存放在快速恢复区所对应的目录(初始化参数db_recovery_file_dest设定)
一、日志模式分类
归档模式(archivelog):
在重做日志文件被覆盖前,oracle将已经写满的重做日志文件通过复制保存到指定为位置 ,保存下来的所有重做日志文件称为“归档重做日志”。
归档日志文件不仅包含了被覆盖的日志文件,还抱好了重做日志文件使用的顺序号。
在该模式下,LGWR在写下一个日志文件之前,需要等待该日志文件归档完成,否则LGWR暂停执行。归档操作有ARCN自动完成,也可有管理员手动完成。为了提高效率,可以考虑使用多个ARCN进程加速归档的速度。
归档模式的优势:
若发生磁盘损坏,可以使用数据库备份和归档重做日志文件恢复已提交的事务。
若为当前数据库建立了备份数据库,可以通过给备份数据库应用归档重做日志文件,保证两者之间一致性。
利用归档重做日志文件,可以实现使用在数据库打开状态下创建的备份文件进行数据库恢复。
非归档模式(noarchivelog):
只能保护实例故障而不能保证介质故障。
如果进行日志切换,生成的新内容将直接覆盖原来的日志记录。
在该模式下,管理员应经常对数据库进行完整的备份。
特点:
检查点完成后,就可以覆盖原来的重做日志文件。
若数据库备份后的重做日志内容已经被覆盖,那么当数据库文件损坏时,只能恢复到最近一次的某个完整备份点,而且这个备份点的时间无法控制,甚至可能有数据的丢失。
二、日志模式切换
(1)查看当前日志模式 select log_mode from v$database;
(2)关闭并重启数据库 shutdown immediate;
startup mount;
(3)切换日志模式 alter database archivelog; 或者 alter database noarchivelog;
(4)打开数据库 alter database open;
三、配置归档进程
若LGWR经常处于等待状态,可以考虑启用多个ARCN,通过修改初始化参数log_archive_max_processes,默认为2。
alter system set log_archive_max_processes=3。
四、设置归档文件位置
归档日志文件保存的 位置称为归档目标,不同的归档目标最好位于不同的磁盘中,以缓解归档操作时磁盘I/O的压力。
归档目标在初始化参数LOG_ARCHIVE_DEST_n中进行设置,n为1到10的整数,即可以为数据库指定1到10个归档目标。在进行归档时,oracle会将重做日志文件组以相同的方式归档到归档目标。在设置归档目标时,可以指定本地机器作为归档目标,也可以选择远程服务器作为归档目标。
本地归档目标(LOCATION):
alter sysytem set log_archive_dest_1='location=D:\OracleFiles\archive1';
同时还可以指定optional、mandatory、reopen选项
alter sysytem set log_archive_dest_1='location=D:\OracleFiles\archive1 optional';
alter sysytem set log_archive_dest_1='location=D:\OracleFiles\archive2 mandatory‘ ;
alter sysytem set log_archive_dest_1='location=D:\OracleFiles\archive3 mandatory reopen=400’;
optional:默认选项,无论归档是否成功,都可以覆盖重做日志文件。
mandatory:只有在归档成功后,才能覆盖重做日志文件。
reopen:默认为300秒。但reopen必须在mandatory后使用。
在使用log_archive_desc_n设置归档位置时,还可以设置初始化参数log_archive_min_succeed_dest控制本地成功归档的“最小个数”。如果成功归档数少于该值,则重做日志文件不能被覆盖。
alter system set log_archive_min_succeed_dest=3;
设置归档目标是否可用
alter system set log_archive_dest_state_4=defer或者enable;
这里的log_archive_dest_stat_n中n的值要大于log_archive_min_succeed_dest,否则会报错。
远程归档目标(SERVER):
alter system set log_archive_dest_1='service=ZLH';
ZLH为远程的服务器名。
五、查看归档日志信息
v$database: 查询数据库日志模式
v$archived_log: 包含控制文件中所有已经归档的日志信息
v$archive_dest: 包含所有归档目标信息
v$archive_processes: 包含已启动的ARCN进程状态信息
v$backup_redolog: 包含所有已经备份的归档日志信息