当数据库处于archivelog模式时,如果进行日志切换,后台进程将自动生成归档日志。归档日志的默认位置为%oracle_home%\rdbms,在oracle database 10g中,归档日志的默认文件名格式为arc%s_%r.%t。为了改变归档日志的位置和名称格式,必须改变相应的初始化参数。
1、
初始化参数log_archive_format用于指定归档日志的文件名格式,设置该初始化参数时,可以指定以下匹配符:
l
l
l
l
l
l
l
需要注意,从oracle database 10g开始,配置归档日志文件格式时,必须带有%s、%t和%r匹配符,而其他匹配符号可有可无。配置了归档文件格式后,必须重启数据库。
SQL> alter system set log_archive_format='%s_%t_%r.arc' scope=spfile;
系统已更改。
SQL> shutdown immediate;
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> startup
ORACLE 例程已经启动。
Total System Global Area
Fixed Size
Variable Size
Database Buffers
Redo Buffers
数据库装载完毕。
数据库已经打开。
修改了初始化参数log_archive_format并重启数据库后,初始化参数配置将会生效。进行日志切换时,会生成该格式的归档日志(如22_1_522517960.arc,其中22是日志序列号,1是重做线程号,522517960.arc是RESETLOGS的编号)。
2、
如果不适用备份数据库,只需要将归档日志放到本地目录。配置本地归档位置可以使用初始化参数log_archive_dest和log_archive_duplex_dest,其中,第一个参数用于指定第一个归档位置,第二个参数用于指定第二个归档位置。
SQL> alter system set log_archive_dest='d:\bak' scope=spfile;
System altered
SQL> alter system set log_archive_duplex_dest='e:\bak' scope=spfile;
System altered
配置了初始化参数log_archive_dest和log_archive_duplex_dest后,当后台进程lgwr执行日志切换时,后台进程arch会生成两份完全相同的归档日志,并分别存放到d:\bak和e:\bak目录中。
3、
初始化参数log_archive_dest_n用于指定多个归档位置,该参数最多可以指定10个归档位置。通过使用初始化参数log_archive_dest_n,不仅可以配置本地归档位置,还可以远程配置归档位置。
如果既要在主节点(主数据库所在机器)上生成归档日志,又要将归档日志传递到备用节点(备用数据库所在机器),那么必须使用参数log_archive_dest_n。该初始化参数与log_archive_dest具有以下区别:
l
l
l
需要注意,因为初始化参数log_archive_dest_n不能与初始化参数log_archive_dest和log_archive_duplex_dest同时使用,使用必须禁用初始化参数log_archive_dest和log_archive_duplex_dest。当使用初始化参数log_archive_dest_n配置本地归档位置时,需要制定location选项;当配置远程归档位置时,需要制定server选项。
SQL> alter system set log_archive_dest_3='location=c:\bak' scope=spfile;
System altered
SQL> alter system set log_archive_dest_1='location=d:\bak' scope=spfile;
System altered
SQL> alter system set log_archive_dest_2='location=e:\bak' scope=spfile;
System altered
SQL> alter system set log_archive_dest_4='service=orcl' scope=spfile;
System altered
执行以上语句后,配置了3个本地归档位置(location选项)和一个宣称归档位置(service选项)。配置远程归档位置时,service选项需要指定远程数据库的网络服务器名(在tnsname.ora文件中配置)。这样,当执行日志切换时,会在服务器上生成3份完全相同的归档日志,并会传递一份归档日志到备用数据库。
4、
使用初始化参数log_archive_dest_n配置归档位置时,可以在归档位置上指定optional或mandatory选项。指定mandatory选项时,可以设置reopen属性。
作用如下:
l
l
l
为了强制归档到特定位置,必须制定mandatroy选项。下面以强制归档到目录d:bak和e:\bak为例子,说明mandatroy和optional选项的使用方法。
SQL> alter system set log_archive_dest_4='service=orcl' scope=spfile;
System altered
SQL> alter system set log_archive_dest_1='location=:d:\bak mandatory' scope=spfile;
System altered
SQL> alter system set log_archive_dest_2='location=:e:\bak mandatory reopen=500' scope=spfile;
System altered
SQL> alter system set log_archive_dest_3='location=c:\bak optional' scope=spfile;
System altered
5、
使用初始化参数log_archive_dest_n配置归档位置时,DBA可以使用初始化参数log_archive_mix_succeed_dest控制本地归档成功的最小成功个数。
SQL> alter system set log_archive_min_succeed_dest=2 ;
System altered
执行以上语句后,如果成功的归档日志少于两份,重做日志将不能被覆盖。
6、
使用初始化参数log_archive_dest_n配置归档位置,DBA可以使用初始化参数log_archive_dest_state_n控制归档位置的可用性。设置该参数为enable(默认值),表示会激活相应的归档位置;设置该参数为defer,表示会禁用相应的归档位置。当归档日志所在的磁盘损坏或填满时,DBA需要暂时禁止该归档位置。
SQL> alter system set log_archive_dest_state_3=defer;
System altered
执行以上语句后,会禁用初始化参数log_archive_dest_state_3所对应的归档位置。为了重新启用该归档位置,可以执行以下语句:
SQL> alter system set log_archive_dest_state_3=enable;
System altered