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参数指定目标,结果将会相同。