2.3.2 利用多个归档目标

可以根据正在使用的Oracle Database Server软件的版本、需要的归档日志文件目标数量以及归档日志文件目标是“仅限本地”还是“适用于本地和远程”,使用与归档有关的两组不同初始化参数。

1.仅限本地目标

如果仅使用本地磁盘位置(也就是说,未使用作为归档重做日志文件的目标的备用数据库),而且本地磁盘位置不超过两个,则可以使用LOG_ARCHIVE_DEST和LOG_ARCHIVE_DUPLEX_ DEST参数。下例将这两个参数设置为指向两个不同磁盘驱动器的归档位置:

        LOG_ARCHIVE_DEST = '/u01/app/oracle/arch'
        LOG_ARCHIVE_DUPLEX_DEST = '/u03/app/oracle/arch'

注意,磁盘驱动器可位于运行Oracle Database 12c的服务器上,也可以位于远在数百英里之外的网络存储服务器上。

练习2-3

确定归档日志文件目标

本练习将确定归档重做日志文件的位置,并确定至少需要多少个归档目标。

(1)使用SQL*Plus连接到数据库,并查找LOG_ ARCHIVE_*参数的值:

        SQL> show parameter log_archive_

        NAME                               TYPE         VALUE
        --------------------------------- ----------- ---------------
        log_archive_config                string
        log_archive_dest                  string
        log_archive_dest_1                string       SERVICE=RMT1
        log_archive_dest_10               string
        log_archive_dest_11               string
        log_archive_dest_12               string

        log_archive_dest_state_1          string       enable
        log_archive_dest_state_10         string       enable
        log_archive_dest_state_11         string       enable
        log_archive_dest_state_12         string       enable
        . . .
        log_archive_dest_state_2          string       enable
        log_archive_dest_state_3          string       enable
        log_archive_dest_state_4          string       enable
        log_archive_dest_state_5          string       enable
        log_archive_dest_state_6          string       enable
        log_archive_dest_state_7          string       enable
        log_archive_dest_state_8          string       enable
        log_archive_dest_state_9          string       enable
        log_archive_duplex_dest           string
        log_archive_format                string       %t_%s_%r.dbf
        log_archive_local_first           boolean      TRUE
        log_archive_max_processes         integer      4
        log_archive_min_succeed_dest      integer      1
        log_archive_start                 boolean      FALSE
        log_archive_trace                 integer      0
        SQL>

在本数据库中,好像仅有一个归档日志文件目标,并且是一个远程目标。要使归档取得成功,唯一的远程目标必须是成功的。

(2)如果定义了快速恢复区,将可以使用第二个归档日志文件目标。请查询与快速恢复区相关的参数:

        SQL> show parameter db_recov

        NAME                               TYPE         VALUE
        --------------------------------- ----------- ---------------
        db_recovery_file_dest             string       +RECOV
        db_recovery_file_dest_size        big integer 8G
        SQL>

提示:

如果正在使用Oracle Database 12c Enterprise Edition,则不再赞成使用LOG_ARCHIVE_DEST和LOG_ARCHIVE_DUPLEX_DEST,建议使用更新的参数LOG_ARCHIVE_DEST_n。

2.本地和远程目标

最多可以指定31个本地或远程归档日志文件目标。如果指定的话,则必须使用LOCATION参数指定本地磁盘目标,或使用SERVICE指定远程数据库实例目标。

在本例中,磁盘上有两个归档日志文件目标,第三个是一个备用实例,它的服务名是STNDBY_CLEVELAND:

        LOG_ARCHIVE_DEST_1 = 'LOCATION=/u01/app/oracle/arch'
        LOG_ARCHIVE_DEST_2 = 'LOCATION=/u03/app/oracle/arch'
        LOG_ARCHIVE_DEST_3 = 'SERVICE=STNDBY_CLEVELAND'

3.定义最小成功目标

无论使用LOG_ARCHIVE_DEST还是LOG_ARCHIVE_DEST_n参数,都可以使用LOG_ARCHIVE_MIN_SUCCEED_DEST参数指定目标数,ARCn进程在回收联机重做日志文件以重用之前,必须将重做日志文件成功地复制到这些目标来归档日志文件。这就是说,从恢复角度来看,如果定义了多个目标,则可能允许在某一给定时间仅有两个目标可用。一些目标可能由于网络问题或备份服务器故障而暂时无法使用。这种情况下,两个可用目标可能已经足以满足恢复要求。

LOG_ARCHIVE_MIN_SUCCEED_DEST参数的值不能超过启用目标的总数。另外,如果使用LOG_ARCHIVE_DEST_n,而且指定为MANDATORY的目标数量超过LOG_ARCHIVE_MIN_SUCCEED_DEST指定的目标数量,则将忽略LOG_ARCHIVE_MIN_SUCCEED_DEST参数。

另外,如果将任何归档日志目标指定为MANDATORY,而相应目标出现了故障,那么在解决故障前将无法覆盖联机日志文件,并会忽略LOG_ARCHIVE_MIN_SUCCEED_DEST参数。

最后,如果正在使用LOG_ARCHIVE_DEST, Oracle会将其视为MANDATORY位置。如果结合使用LOG_ARCHIVE_DEST_n和MANDATORY参数指定目标,结果将会相同。