导航

3.3 配置其他归档参数

Posted on 2008-09-08 11:20  毅无涯  阅读(490)  评论(0编辑  收藏  举报

当数据库处于ARCHIVELOG 模式时,当进行日志切换时,后台进程ARCH 会自动生成归档日志。从ORACLE DATABASE 10G 开始,默认情况下,归档日志会存放在恢复区所对应的目录(对应于初始化参数db_recovery_file_dest),并且会按照特定格式生成归档日志文件名。为了改变归档日志的位置和名称格式,必须改变相应的初始化参数。

1. 配置归档日志的名称格式

初始化数据log_archive_format 用于指定归档日志的文件名格式,当设置该初始化参数时,可以指定以下匹配符:

  • %s:日志序列号
  • %S:日志序列号(带有前导0)
  • %t:重做线程编号
  • %T:重做线程编号(带有前导0)
  • %a:活动ID号
  • %d:数据库ID号
  • %r:RESETLOGS的ID值

从ORACLE DATABASE 10G 开始,当配置归档日志的名称格式时,匹配符%s、%t 和 %r是必需的。因为初始化参数log_archive_format 是静态参数,所以在修改之后必须重新启动数据库。如果归档日志被存放在快速恢复区,那么归档日志文件名不会采用log_archive_format 文件名格式。

SQL> alter system set log_archive_format='%s_%t_%r.log' scope=spfile;

系统已更改。

SQL> shutdown
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> startup
ORACLE 例程已经启动。

Total System Global Area  167772160 bytes
Fixed Size                  1247900 bytes
Variable Size              75498852 bytes
Database Buffers           88080384 bytes
Redo Buffers                2945024 bytes
数据库装载完毕。
数据库已经打开。

 

2. 使用log_archive_dest_n 配置归档位置

初始化参数log_archive_dest_n 用于指定多个归档位置,其中n是1和10之间的整数。通过使用该参数,不仅可以配置本地归档位置,还可以配置远程归档位置。

如果既要在主节点(主数据库所在机器)上生成归档日志,又要将归档日志传递到备用节点(备用数据库所在机器),那么必须使用参数log_archive_dest_n 配置归档位置。

  • log_archive_dest_n 、log_archive_dest、log_archive_duplex_dest 的区别:
  • log_archive_dest_n 可以配置本地归档位置和远程归档位置,log_archive_dest 和 log_arvhive_duplex_dest 只以配置本地归档位置。
  • log_archive_dest_n 可以配置多达10 个归档位置,log_archive_dest 和 log_archive_duplex_dest 最多只能配置两个归档位置。
  • log_archive_dest_n 不能与 log_archive_dest 和 log_archive_duplex_dest 同时使用。

当使用 log_archive_dest_n 配置本地归档位置时,需要使用 LOCATION 选项指定本地目录;当配置远程归档位置时,需要使用 SERVICE 选项指定到备用数据库的网络服务名。

SQL> alter system set log_archive_dest_1='location=c:\demo\archive';

系统已更改。

SQL> alter system set log_archive_dest_2='location=d:\demo\archive';

系统已更改。

SQL> alter system set log_archive_dest_3='service=orcl';

系统已更改。

上面语句配置了两个本地归档位置(LOCATION 选项)和一个远程归档位置(SERVICE 选项)。当执行日志切换时,会在主节点上生成两份相同的归档日志(互为镜像),并且会传递一份归档日志到备用节点。

 

3. 使用 log_archive_dest_n 的其他常用选项

当使用初始化参数 log_archive_dest_n 配置归档位置时,可以在归档位置上指定OPTIONAL 或 MANDATORY 选项。当指定 MANDATORY 选项时,还可以设置 REOPEN 属性。

OPTIONAL:该选项是默认选项。当使用该选项时,无论归档是否成功,都可以覆盖重做日志。

MANDATORY:该选项用于强制归档。当使用该选项时,只有在归档成功之后,重做日志才能被覆盖。

REOPEN:该属性用于指定重新归档的时间间隔,默认值是300秒(REOPEN 属性必须跟在 MANDATORY 选项后)。

SQL> alter system set log_archive_dest_1='location=c:\demo\archive optional';

系统已更改。

SQL> alter system set log_archive_dest_2='location=d:\demo\archive mandatory reopen=400';

系统已更改。

 

4. 使用 log_archive_dest_state_n 控制归档位置

如果归档位置所对应的磁盘剩余空间不足或出现损坏,那么归档到该位置将出现失败。为了解决磁盘问题,可能需要临时禁用相应的归档位置。通过使用初始化参数 log_archive_dest_state_n (n=1,2......10),DBA 可以控制归档位置的可用性。其值可为:ENABLE(激活);DEFER(禁用)。

SQL> alter system set log_archive_dest_state_1=enable;

系统已更改。

SQL> alter system set log_archive_dest_state_2=enable;

系统已更改。

SQL> alter system set log_archive_dest_state_3=defer;

系统已更改。

 

5. 使用 log_archive_max_processes 控制归档进程

初始化参数 log_archive_max_processes 用于控制归档进程个数。当数据库为 ARCHIVELOG 模式时,默认情况下 ORACLE 会自己启动两个归档进程。

SQL> alter system set log_archive_max_processes=3;

系统已更改。

 

6. 使用 log_archive_min_succeed_dest 控制本地归档最小成功个数

SQL> alter system set log_archive_min_succeed_dest=2;

系统已更改。

当执行上面语句后,如果在本地生成的归档日志少于两份,那么重做日志将不能被覆盖。

 

7. 使用 log_archive_dest 配置归档位置

如果不使用备用数据库,那么只需要将归档日志存放在本地目录。配置本地一至两个归档位置可以使用初始化参数 log_archive_dest 和 log_archive_duplex_dest,其中第一个参数用于指定第一个归档位置,第二个参数用于指定第二个归档位置(log_archive_dest 和 log_arvhive_duplex_dest 是为了与早期兼容而保留的,并且它们不能与 log_archive_dest_n 同时使用)。

SQL> alter system set log_archive_dest='d:\demo\archive1';
alter system set log_archive_dest='d:\demo\archive1'
*
第 1 行出现错误:
ORA-02097: 无法修改参数, 因为指定的值无效
ORA-16018: 无法将 LOG_ARCHIVE_DEST 与 LOG_ARCHIVE_DEST_n 或
DB_RECOVERY_FILE_DEST 一起使用

SQL> alter system set log_archive_duplex_dest='d:\demo\archive2';
alter system set log_archive_duplex_dest='d:\demo\archive2'
*
第 1 行出现错误:
ORA-02097: 无法修改参数, 因为指定的值无效
ORA-16018: 无法将 LOG_ARCHIVE_DUPLEX_DEST 与 LOG_ARCHIVE_DEST_n 或
DB_RECOVERY_FILE_DEST 一起使用