首页 > 数据库 > Oracle > 配置归档位置和文件格式
当数据库处于archivelog模式时,如果进行日志切换,后台进程将自动生成归档日志。归档日志的默认位置为%oracle_home%\rdbms,在oracle database 10g中,归档日志的默认文件名格式为arc%s_%r.%t。为了改变归档日志的位置和名称格式,必须改变相应的初始化参数。
1、 配置归档文件格式
初始化参数log_archive_format用于指定归档日志的文件名格式,设置该初始化参数时,可以指定以下匹配符:
l %s:日志序列号
l %S:日志序列号(带有前导0)。
l %t: 重做线程编号。
l %T: 重做线程编号(带有前导0)
l %a:活动ID号
l %d:数据库ID号
l %r:RESETLOGS的值。
需要注意,从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 251658240 bytes
Fixed Size 1248356 bytes
Variable Size 113247132 bytes
Database Buffers 130023424 bytes
Redo Buffers 7139328 bytes
数据库装载完毕。
数据库已经打开。
修改了初始化参数log_archive_format并重启数据库后,初始化参数配置将会生效。进行日志切换时,会生成该格式的归档日志(如22_1_522517960.arc,其中22是日志序列号,1是重做线程号,522517960.arc是RESETLOGS的编号)。
2、 使用log_archive_dest配置归档位置
如果不适用备份数据库,只需要将归档日志放到本地目录。配置本地归档位置可以使用初始化参数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配置多个归档位置
初始化参数log_archive_dest_n用于指定多个归档位置,该参数最多可以指定10个归档位置。通过使用初始化参数log_archive_dest_n,不仅可以配置本地归档位置,还可以远程配置归档位置。
如果既要在主节点(主数据库所在机器)上生成归档日志,又要将归档日志传递到备用节点(备用数据库所在机器),那么必须使用参数log_archive_dest_n。该初始化参数与log_archive_dest具有以下区别:
l 初始化参数log_archive_dest_n可以配置本地归档位置和远程归档位置,而初始化参数log_archive_dest和log_archive_duplex_dest只能配置本地归档位置。
l 初始化参数log_archive_dest_n可以配置多达10个归档位置,而初始化参数log_archive_dest和log_archive_duplex_dest最多只能配置两个归档位置。
l 初始化参数log_archive_dest_n不能与初始化参数log_archive_dest和log_archive_duplex_dest同时使用。
需要注意,因为初始化参数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选项
使用初始化参数log_archive_dest_n配置归档位置时,可以在归档位置上指定optional或mandatory选项。指定mandatory选项时,可以设置reopen属性。
作用如下:
l Optional:该选项是默认选项。使用该选项时,无论归档是否成功,都可以覆盖重做日志。
l Mandatory:该选项用于强制归档。使用该选项时,只有在归档成功之后,重做日志才能被覆盖。
l Reopen:该属性用于指定重新归档的事件间隔,默认值为300秒。需要注意,reopen属性必须跟在mandaroty选项后。
为了强制归档到特定位置,必须制定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
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/25462274/viewspace-2125135/ ,如需转载,请注明出处,否则将追究法律责任。