Oracle管理归档日志文件

时间:2021-07-23 08:11:04

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:       包含所有已经备份的归档日志信息