Oracle 12C 及19C DG备库如何设置延迟应用

 ****************************************************************************
公众号:尚雷的驿站
CSDN :https://blog.csdn.net/shlei5580
墨天轮:https://www.modb.pro/u/2436
PGFans: https://www.pgfans.cn/user/home?userId=4159

****************************************************************************

编辑

一、问题描述

Oracle 12C及19C 完成DG后,如果想设置备库延迟应用主库日志,发现和11G之前的版本已有很大区别。

备库无法像11G或10G直接使用delay=xxx语句就能生效。

当在备库执行

alter database recover managed standby database delay 4320 disconnect from session;

会报如下错误:

图片

编辑

delay=xxx 语句执行在主库端进行设置:

alter system set log_archive_dest_2='SERVICE="(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.XX.XX)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=xx.xxxx)(INSTANCE_NAME=xx)))" LGWR ASYNC DELAY=4320 REOPEN=60 MAX_FAILURE=10 VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME="xx"' sid='*';

此时即使主库设置delay=xxx ,备库执行 alter database recover managed standby database disconnect from session;语句,备库alert日志仍然未出现Delay信息,无法达到延迟应用的目的。

当主库切换日志时,发现备库日志会报

图片

编辑

会发现当主库切换日志时,备库仍然会是real time apply的模式,无法达到延迟应用日志的目的。

二、原因分析

该原因是从Oracle 12开始,如果要不使用real time apply,需要加using archived log,using current logfile已经过期作废,不带using语句,在11g中,默认是不使用real time apply,而在12c中是默认使用real time apply。

三、解决办法

所以要想在12C之后的DG备库设置延迟应用日志,可以采用如下方法:

主库:

alter system set log_archive_dest_2='SERVICE="(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.XX.XX)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=xx.xxxx)(INSTANCE_NAME=xx)))" LGWR ASYNC DELAY=4320 REOPEN=60 MAX_FAILURE=10 VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME="xx"' sid='*';

备库:

ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING ARCHIVED LOGFILE DISCONNECT;

此时,在主库切换日志,备库alert日志就会出现 Delay 多长时间的信息,备库达到延迟应用效果。


请使用浏览器的分享功能分享到微信等