Oracle DataGuard 搭建关键参数详解

来源:这里教程网 时间:2026-03-03 22:39:52 作者:

一、文档概述

本文档聚焦 Oracle DataGuard 搭建过程中的核心参数,从主库与备库基础配置参数、日志传输相关参数、备库恢复相关参数、监控与性能优化参数四大维度,详细解析每个参数的作用、取值范围、配置建议及注意事项,为DataGuard 环境的搭建、稳定运行与性能优化提供技术支撑。本次更新修正了部分参数的错误表述,并补充了日志传输参数的关键细节。

二、主库与备库基础配置参数

2.1 DB_NAME

  • 参数作用:用于标识一个数据库的唯一名称,是数据库的核心标识,主库和备库的 DB_NAME 必须完全一致,这是 DataGuard 环境中主备库建立关联的基础。

    2.2 DB_UNIQUE_NAME

  • 参数作用:在 DataGuard 环境中,常规做法是主备间使用不同的DB_UNIQUE_NAME,以示区分;但其实dg均是部署在不同服务器上,DB_UNIQUE_NAME 也可以相同,DB_UNIQUE_NAME相同时LOG_ARCHIVE_CONFIG配置为nodg_config即可;
  • 配置示例
  • 主库配置(属于 DG_CONFIG 为 ORCL_DG 的环境):

    ALTER SYSTEM SET DB_UNIQUE_NAME = 'ORCL_PRIMARY' SCOPE = SPFILE;

  • 备库配置(同属 ORCL_DG 环境):

    ALTER SYSTEM SET DB_UNIQUE_NAME = 'ORCL_STANDBY' SCOPE = SPFILE;

  • 注意事项:该参数为静态参数,修改后需重启数据库;在同一个 DataGuard 环境的LOG_ARCHIVE_CONFIG 参数中,需引用各数据库唯一的 DB_UNIQUE_NAME;默认情况下service_names与DB_UNIQUE_NAME值相同。

    2.3 LOG_ARCHIVE_CONFIG

  • 参数作用:可以理解为此DG环境中的db_unique_name列表,包含主备的所有实例,要求主备参数一致,无需理会先后顺序。
  • 取值格式
  • 参与 DataGuard 环境:DG_CONFIG=(db_unique_name1, db_unique_name2, ...),其中 db_unique_name1、db_unique_name2 等
  • DataGuard 环境中各数据库的 DB_UNIQUE_NAME相同时,该值可配置为nodg_config。
  • 配置示例
  • DataGuard 环境配置:

    ALTER SYSTEM SET LOG_ARCHIVE_CONFIG = 'DG_CONFIG=(ORCL_PRIMARY, ORCL_STANDBY)' SCOPE = BOTH;

    ALTER SYSTEM SET LOG_ARCHIVE_CONFIG = 'NODG_CONFIG' SCOPE = BOTH;

  • 注意事项:该参数为动态参数,修改后无需重启数据库即可生效

    三、日志传输相关参数

    3.1 LOG_ARCHIVE_DEST_n (n=1-31)

  • 参数作用:用于指定归档日志的存储位置或传输目标,在 DataGuard 环境中,主库通过该参数配置向备库传输日志的目标地址和相关属性,备库也可通过该参数配置回传给主库日志。
  • 常用属性
  • LOCATION:指定归档日志在本地文件系统的存储路径,适用于本地归档或备库接收日志后的本地存储。例如 LOCATION=/u01/app/oracle/archivelog。
  • SERVICE:指定目标数据库(通常是备库)的 TNS 服务名,用于主库向备库传输日志。例如SERVICE=ORCL_STANDBY。
  • SYNC/ASYNC:指定日志传输模式,SYNC 表示同步传输,主库在提交事务前需等待备库确认接收日志(确保数据零丢失);ASYNC 表示异步传输,主库无需等待备库确认即可提交事务(牺牲部分一致性换取性能)。对于Dataguard的三种保护模式,此参数有不同的要求。默认是最大可用模式,建议设置async即可。
  • VALID_FOR:指定该归档目标适用于的日志类型和数据库角色:
  • VALID_FOR=(ONLINE_LOGFILES, PRIMARY_ROLE):仅在主库角色且针对在线日志文件时生效(主库向备库传日志常用)
  • VALID_FOR=(ARCHIVE_LOGFILES, STANDBY_ROLE):仅在备库角色且针对归档日志文件时生效(备库本地归档常用)
  • VALID_FOR=(ALL_LOGFILES, ALL_ROLES): 适用于数据库角色可能切换的场景(如switchover 后),无论数据库是主库还是备库角色,无论针对在线日志还是归档日志,该归档目标均生效。例如 VALID_FOR=(ALL_LOGFILES, ALL_ROLES) 可用于主备切换后,无需重新修改该参数即可继续使用。
  • DB_UNIQUE_NAME:指定目标数据库的 DB_UNIQUE_NAME,确保与LOG_ARCHIVE_CONFIG 中配置的一致,避免传输目标错误。
  • 归档传输压缩相关属性
  • COMPRESSION=ENABLE:启用归档日志传输压缩功能,减少网络带宽占用,适用于主备库跨异地、网络带宽有限的场景。例如 COMPRESSION=ENABLE(Oracle 11gR2 及以上版本支持)
  • COMPRESSION_LEVEL:指定压缩级别(仅部分 Oracle 版本支持,如 19c+),取值为 LOW(低压缩比、快速度)、MEDIUM(平衡压缩比和速度,默认)、HIGH(高压缩比、慢速度)。例如 COMPRESSION_LEVEL=HIGH。
  • 补充故障重试相关属性
  • REOPEN:指定归档目标故障后,数据库重新尝试连接的时间间隔(单位:秒),默认值为 300 秒。例如 REOPEN=60 表示故障后每 60 秒重试一次。
  • MAX_FAILURE:指定归档目标连续失败的最大次数,超过该次数后,数据库会自动将该归档目标状态设为 DEFER(延迟启用),需手动重新启用。例如 MAX_FAILURE=5 表示连续失败 5 次后自动 defer。
  • NOAFFIRM/AFFIRM:仅与 SYNC 模式配合使用,AFFIRM 表示备库在确认日志写入磁盘后,再向主库返回确认信息(同步模式下默认值,确保备库日志持久化);NOAFFIRM 表示备库仅将日志写入内存后即返回确认信息(同步模式下的 “伪同步”,存在备库崩溃导致日志丢失风险,不建议使用)。
  • 配置示例
  • 主库配置向备库异步传输、启用压缩、支持角色切换的归档目标:

    ALTER SYSTEM SET LOG_ARCHIVE_DEST_2 = 'SERVICE=ORCL_STANDBY ASYNC VALID_FOR=(ALL_LOGFILES, ALL_ROLES) DB_UNIQUE_NAME=ORCL_STANDBY COMPRESSION=ENABLE COMPRESSION_LEVEL=MEDIUM REOPEN=60 MAX_FAILURE=5' SCOPE = BOTH;

  • 备库配置支持角色切换、本地归档的目标:

    ALTER SYSTEM SET LOG_ARCHIVE_DEST_1 = 'LOCATION=/u01/app/oracle/archivelog VALID_FOR=(ALL_LOGFILES, ALL_ROLES) DB_UNIQUE_NAME=ORCL_STANDBY' SCOPE = BOTH;

  • 主库配置同步传输、备库日志持久化的归档目标:

    ALTER SYSTEM SET LOG_ARCHIVE_DEST_3 = 'SERVICE=ORCL_STANDBY_SYNC SYNC AFFIRM VALID_FOR=(ONLINE_LOGFILES, PRIMARY_ROLE) DB_UNIQUE_NAME=ORCL_STANDBY_SYNC' SCOPE = BOTH;

  • 注意事项
  • 每个 LOG_ARCHIVE_DEST_n 参数只能配置一个归档目标;n 的取值范围为 1 - 31,其中LOG_ARCHIVE_DEST_1 通常用于本地归档。
  • 需确保 SERVICE 指定的 TNS 服务名在本地 tnsnames.ora 文件中正确配置,且主备库网络互通(可通过 tnsping 命令测试)。
  • 启用压缩功能会增加主备库的 CPU 负载,需根据服务器 CPU 资源情况权衡(如 CPU 空闲率低则不建议启用高压缩级别)。
  • ALL_ROLES 配置虽灵活,但需确保归档路径或服务在角色切换后仍有效(如备库切换为主库后,原 SERVICE 指向的备库需正常运行),避免参数失效。

    3.2 LOG_ARCHIVE_DEST_STATE_n (n=1-31)

  • 参数作用:用于控制对应的 LOG_ARCHIVE_DEST_n 归档目标的状态,决定是否启用该归档目标的日志传输或存储功能。
  • 取值范围
  • ENABLE:启用该归档目标,允许日志传输或存储到该目标。
  • DISABLE:禁用该归档目标,停止日志传输或存储到该目标。
  • DEFER:延迟启用该归档目标,当前不启用,但可在后续需要时启用(如归档目标故障后临时defer,修复后再启用)。
  • 配置示例

    ALTER SYSTEM SET LOG_ARCHIVE_DEST_STATE_2 = 'ENABLE' SCOPE = BOTH;

    -- 归档目标故障时临时 defer

    ALTER SYSTEM SET LOG_ARCHIVE_DEST_STATE_2 = 'DEFER' SCOPE = BOTH;

    -- 故障修复后重新启用

    ALTER SYSTEM SET LOG_ARCHIVE_DEST_STATE_2 = 'ENABLE' SCOPE = BOTH;

  • 注意事项:该参数为动态参数,修改后无需重启数据库;当 LOG_ARCHIVE_DEST_n 配置完成后,需将对应的 LOG_ARCHIVE_DEST_STATE_n 设置为 ENABLE 才能启用该归档目标;若LOG_ARCHIVE_DEST_n 配置了 MAX_FAILURE,连续失败超次数后,状态会自动变为 DEFER,需手动排查故障后重新启用。

    3.3 LOG_ARCHIVE_FORMAT

  • 参数作用:指定归档日志文件的命名格式,便于识别和管理归档日志。
  • 常用占位符
  • %t:线程号,适用于 RAC 环境(单实例环境线程号固定为 1)。
  • %s:日志序列号(递增,确保每个归档日志唯一标识)。
  • %r:重置日志 ID(当数据库执行 RESETLOGS 操作后,该值会递增,避免日志序列号重复)。
  • %d:数据库名称(即 DB_NAME,可用于区分不同数据库的归档日志)。
  • 配置示例

    ALTER SYSTEM SET LOG_ARCHIVE_FORMAT = 'arc_%d_%t_%s_%r.arc' SCOPE = SPFILE;

    -- 生成的归档日志示例:arc_ORCL_1_1234_5678.arc

  • 注意事项:该参数为静态参数,修改后需重启数据库生效;主库和备库的 LOG_ARCHIVE_FORMAT 可以相同,也可以根据实际需求设置不同的格式,但建议保持一致以便于跨库日志管理(如日志恢复时快速匹配);若使用 RAC 环境,需包含 %t 占位符以区分不同实例的日志。该参数默认即可,不用特殊配置;

    四、备库恢复相关参数

    4.1 STANDBY_FILE_MANAGEMENT

  • 参数作用:控制备库是否自动管理数据文件的创建和删除,当主库添加、删除或重命名数据文件时,该参数决定备库是否自动执行相应的操作。
  • 取值范围
  • AUTO:备库自动管理数据文件,主库的数据文件操作会自动同步到备库,备库会根据主库的操作创建、删除或重命名相应的数据文件(需确保备库的数据文件路径与主库兼容,或通过DB_FILE_NAME_CONVERT 参数进行转换)。
  • MANUAL:备库手动管理数据文件,主库的数据文件操作不会自动同步到备库,需手动在备库执行相应的操作(如主库添加数据文件后,备库需手动执行 ALTER DATABASE CREATE DATAFILE 命令)。
  • 配置示例

    ALTER SYSTEM SET STANDBY_FILE_MANAGEMENT = 'AUTO' SCOPE = BOTH;

  • 注意事项:该参数为动态参数,修改后无需重启数据库生效;当设置为 AUTO 时,需确保备库有足够的磁盘空间,且数据文件路径配置正确(可配合 DB_FILE_NAME_CONVERT 和LOG_FILE_NAME_CONVERT 参数使用);若主库执行了 DROP DATAFILE 操作,备库在 AUTO 模式下会自动删除对应的空数据文件(非空数据文件需手动处理)。

    4.2 DB_FILE_NAME_CONVERT

  • 参数作用:用于在备库上转换主库数据文件的路径,当主库和备库的数据文件存储路径不同时,该参数指定主库数据文件路径与备库数据文件路径的映射关系,使备库能够正确找到对应的 datafile。
  • 取值格式:DB_FILE_NAME_CONVERT = (primary_datafile_path1, standby_datafile_path1, primary_datafile_path2, standby_datafile_path2, ...),其中每一对路径分别对应主库和备库的数据文件路径(支持通配符,如 /u01/* 可匹配 /u01 下的所有子路径)。
  • 配置示例

    若主库数据文件路径包含 /u01/app/oracle/oradata/ORCL/ 和 /u03/app/oracle/oradata/ORCL/,备库对应路径为 /u02/app/oracle/oradata/ORCL_STANDBY/ 和 /u04/app/oracle/oradata/ORCL_STANDBY/,配置如下:

    ALTER SYSTEM SET DB_FILE_NAME_CONVERT = ('/u01/app/oracle/oradata/ORCL/', '/u02/app/oracle/oradata/ORCL_STANDBY/', '/u03/app/oracle/oradata/ORCL/', '/u04/app/oracle/oradata/ORCL_STANDBY/') SCOPE = SPFILE;

  • 注意事项:该参数为静态参数,修改后需重启数据库生效;路径映射需准确,若主库有多个不同的数据文件路径,需逐一配置对应的备库路径(顺序不可颠倒,需成对配置);当STANDBY_FILE_MANAGEMENT

    4.3 LOG_FILE_NAME_CONVERT

    参数作用:与 DB_FILE_NAME_CONVERT 类似,用于在备库上转换主库重做日志文件(包括在线日志和standby 日志)的路径,当主库和备库的重做日志文件存储路径不同时,通过该参数实现路径映射。

    取值格式:LOG_FILE_NAME_CONVERT = (primary_logfile_path1, standby_logfile_path1, primary_logfile_path2, standby_logfile_path2, ...)。

    配置示例:

    若主库重做日志文件路径为 /u01/app/oracle/oradata/ORCL/redo/,备库重做日志文件路径为 /u02/app/oracle/oradata/ORCL_STANDBY/redo/,配置如下:

    ALTER SYSTEM SET LOG_FILE_NAME_CONVERT = ('/u01/app/oracle/oradata/ORCL/redo/', '/u02/app/oracle/oradata/ORCL_STANDBY/redo/') SCOPE = SPFILE;

    注意事项:该参数为静态参数,修改后需重启数据库生效;配置时需涵盖主库所有重做日志文件的路径,包括在线日志和 standby 日志的路径;若备库未正确配置该参数,可能导致备库无法正常应用日志或切换日志。

    4.4 RECOVERY_PARALLELISM

    参数作用:指定备库在执行介质恢复(应用归档日志)时使用的并行进程数,用于优化备库的恢复性能,减少日志应用延迟。

    取值范围:默认值为 0(表示使用 1 个并行进程),最大值取决于数据库的资源配置(如 CPU 核心数),通常建议根据 CPU 核心数和 I/O 性能设置,一般取值为 2 - 8(对于高性能服务器可适当提高)。

    配置示例:

    ALTER SYSTEM SET RECOVERY_PARALLELISM = 4 SCOPE = BOTH;

    注意事项:该参数为动态参数,修改后无需重启数据库生效;并行进程数并非越多越好,过多的并行进程可能导致 CPU 和 I/O 资源竞争,反而降低恢复性能,需根据实际硬件资源进行测试和调整;在 RAC 备库环境中,该参数的设置需考虑集群的整体资源情况。

  • 相关推荐