配置ADG归档日志删除策略

配置LOG_ARCHIVE_DEST_n参数

在 ADG 环境中,LOG_ARCHIVE_DEST_n 参数(其中 n 是 1 到 31 之间的数字)用于定义重做日志的归档目的地。这些目的地可以是本地或远程的,远程目的地通常指向备库。

  1. 定义本地归档目的地:
    为了在主库上保留归档日志的本地副本,可以设置:
ALTER SYSTEM SET LOG_ARCHIVE_DEST_1='LOCATION=/path_to_archives';
  1. 定义远程归档目的地:
    为了将归档日志发送到备库,可以设置:
ALTER SYSTEM SET LOG_ARCHIVE_DEST_2='SERVICE=standby_db_name ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=standby_unique_name';
含义
SERVICE 指向备库的 TNS 服务名。例如:SERVICE=’standby_db’
ASYNC 表示使用异步模式发送日志
VALID_FOR 定义归档日志目的地的有效性。例如:VALID_FOR=(ONLINE_LOGFILES, PRIMARY_ROLE)
DB_UNIQUE_NAME 备库的唯一名称
  1. 设置归档日志的传输属性:
含义
AFFIRM 定义备库需要确认已经收到并写入重做日志
NOAFFIRM 不等待备库确认
LGWR SYNC 使用同步模式将重做日志从主库传输到备库
LGWR ASYNC 使用异步模式将重做日志从主库传输到备库
  1. 其他常见设置:
含义
REOPEN 如果归档失败,定义重新尝试的时间间隔
DELAY 指定在备库上应用归档日志之前的延迟时间(以分钟为单位)。例如:DELAY=60
ALTERNATE 定义备用归档目的地,当主要目的地不可用时使用。例如:ALTERNATE=LOG_ARCHIVE_DEST_2
MAX_FAILURE 指定在放弃归档日志目的地之前允许的连续失败次数
NET_TIMEOUT 指定网络操作的超时时间(以秒为单位)

例如:

ALTER SYSTEM SET LOG_ARCHIVE_DEST_2='SERVICE=standby_db_name SYNC AFFIRM VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=standby_unique_name';
  1. 设置归档日志的保留策略:
    使用 LOG_ARCHIVE_DEST_STATE_n 参数来启用或禁用特定的归档目的地:
ALTER SYSTEM SET LOG_ARCHIVE_DEST_STATE_2=ENABLE;
  1. 清除或重置归档目的地:
    如果需要清除或重置特定的归档目的地,可以使用:
ALTER SYSTEM SET LOG_ARCHIVE_DEST_2='';

配置主库和备库的归档日志删除策略

  1. 主库的归档日志删除策略

在主库上,可以使用 LOG_ARCHIVE_DEST_n 参数的 DELETE 属性来配置归档日志的删除策略。
删除已传输的归档日志:

ALTER SYSTEM SET LOG_ARCHIVE_DEST_2='SERVICE=standby_db_name VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=standby_unique_name DELETE ALL ARCHIVELOG ALL SHIPPED TO standby_unique_name';

这将确保所有已经成功传输到指定备库的归档日志在主库上被删除。

  1. LOG_ARCHIVE_DELETION_POLICY

除了第一种方法外,还可以通过设置LOG_ARCHIVE_DELETION_POLICY参数,来控制归档日志的自动删除策略。以下是该参数的一些常用设置及其含义:

含义
APPLIED 当设置为 APPLIED 时,Oracle 会自动删除已经被备库应用的归档日志。这是在 Data Guard 环境中常用的设置,确保只有已经安全应用到备库的归档日志才会被删除
NONE 当设置为 NONE 时,Oracle 不会自动删除任何归档日志。这意味着需要手动管理和删除归档日志
SPACE 当设置为 SPACE 时,Oracle 会在磁盘空间不足时自动删除归档日志
SHIPPING 当设置为 SHIPPING 时,Oracle 会删除已经成功传输到所有指定的备库的归档日志。这个和第一个不同的是,第一个包括了传输和应用

设置方法如下:

ALTER SYSTEM SET LOG_ARCHIVE_DELETION_POLICY = APPLIED;
  1. 备库的归档日志删除策略

在备库上,归档日志的删除通常是基于它们是否已经被应用。使用 RMAN 的配置来自动删除已经被应用的归档日志:

rman> CONFIGURE ARCHIVELOG DELETION POLICY TO APPLIED ON STANDBY;
  1. 验证归档日志删除策略是否生效

在备用库上执行下面的SQL,可以在备库上查看归档日志文件的状态。这是一个用来验证归档日志的删除策略是否已经生效的方法。

SELECT APPLIED, ARCHIVED, DELETED FROM V$ARCHIVED_LOG;
列名 含义
APPLIED 这一列表示归档日志是否已经在备库上被应用。如果值为 YES,则表示该归档日志已经被应用
ARCHIVED 这一列表示归档日志是否已经被归档。在备库上,这通常应该是 NO,因为备库通常不会自己生成归档日志。它只是从主库接收并应用归档日志
DELETED 这一列表示归档日志是否已经被删除。如果值为 YES,则表示该归档日志已经被删除
  1. 注意事项
  • 在配置归档日志的删除策略之前,确保有最近的备份,以防万一。
  • 在主库上,确保不要过早地删除归档日志,因为备库可能仍然需要它们。
  • 在备库上,确保归档日志已经被应用并且不再需要之后再删除它们。
  • 定期检查归档日志的目的地,确保它们没有填满磁盘空间。
  • 在生产环境中应用这些设置之前,建议先在测试环境中验证它们。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注