Configuring Real-Time Redo Transport on Zero Data Loss Recovery Appliance

Real-Time Redo Transport is a mechanism used to send redo information directly from the buffer protected database to Zero Data Loss Recovery Appliance, minimizing the backup gap, turning restore point for protected databases using ZDLRA, with zero data loss.

With each redo data sent to the ZDLRA, the appliance creates a backup, which, together with the incremental backups, forms the virtual backup.

We can configure Real-Time Redo Transport two different ways, using Data Guard Broker or just setting archive destination parameters.

Also, depends on your protected database version, the way you set the Redo Transport also will be different.

Let’s divide the configuration between Data Guard Broker and Archive Parameters, and inside of both, version prior to 12.1 and equal to or later than 12.2.

We will use the following article as a basis for the users used: https://mypieceofdata.com/2025/07/21/configuring-replication-on-zero-data-loss-recovery-appliance/

The first thing we have to do is, set VPC user to be used to send redo data from protected database to ZDLRA. This configuration is common across versions.

Let’s set on protected database, redo_transport_user parameter to vpc user created earlier:

$ sqlplus "/ as sysdba"

SQL> alter system set redo_transport_user=raha_local_vpcuser scope=both sid='*';

System altered.

Data Guard Broker Configuration

Now, lets set broker:

$ sqlplus "/ as sysdba"

SQL> alter system set dg_broker_config_file1='+DATAC1/cdb122ha/dr1cdb122ha.dat';

System altered.

SQL> alter system set dg_broker_config_file2='+DATAC1/cdb122ha/dr2cdb122ha.dat';

System altered.

SQL> alter system set dg_broker_start=true;

System altered.

Prio 12.1

In the broker, we need to configure the ZDLRA parameters:

$ dgmgrl sys/<SYS_PASSWORD>

DGMGRL for Linux: Version 12.1.0.2.0 - 64bit Production

Copyright (c) 2000, 2013, Oracle. All rights reserved.

Welcome to DGMGRL, type "help" for information.

Connected as SYSDG.

DGMGRL> create configuration cdb121ha as primary database is cdb121ha connect identifier is '//dbm-scan/cdb121ha';

Configuration "cdb121ha" created with primary database "cdb121ha"

DGMGRL> add recovery_appliance raha1 as connect identifier is 'dr_raha1';

Recovery Appliance "raha1" added

DGMGRL> add recovery_appliance raha2 as connect identifier is 'dr_raha2';

Recovery Appliance "raha2" added

DGMGRL> edit recovery_appliance raha1 set property MaxFailure=1;

Property "maxfailure" updated

DGMGRL> edit recovery_appliance raha1 set property ReopenSecs=10;

Property "reopensecs" updated

DGMGRL> edit recovery_appliance raha1 set property NetTimeout=8;

Property "nettimeout" updated

DGMGRL> edit recovery_appliance raha2 set property MaxFailure=0;

Property "maxfailure" updated

DGMGRL> edit recovery_appliance raha2 set property NetTimeout=8;

Property "nettimeout" updated

DGMGRL> edit database cdb122ha set property RedoRoutes = '(LOCAL : raha1 alt=(raha2 FALLBACK))';

Property "redoroutes" updated

DGMGRL> enable configuration;

Enabled.

Later 12.2

Lets change the settings:

$ dgmgrl sys/<SYS_PASSWORD>

DGMGRL for Linux: Release 12.2.0.1.0 - Production on Tue Jun 5 11:37:44 2018

Copyright (c) 1982, 2017, Oracle and/or its affiliates. All rights reserved.

Welcome to DGMGRL, type "help" for information.

Connected to "cdb122ha"

Connected as SYSDG.

DGMGRL> create configuration cdb122ha as primary database is cdb122ha connect identifier is '//dbm-

scan/cdb122ha';

Configuration "cdb122ha" created with primary database "cdb122ha"

DGMGRL> add recovery_appliance raha1 as connect identifier is 'dr_raha1';

Recovery Appliance "raha1" added

DGMGRL> add recovery_appliance raha2 as connect identifier is 'dr_raha2';

Recovery Appliance "raha2" added

DGMGRL> edit recovery_appliance raha1 set property MaxFailure=1;

Property "maxfailure" updated

DGMGRL> edit recovery_appliance raha1 set property ReopenSecs=10;

Property "reopensecs" updated

DGMGRL> edit recovery_appliance raha1 set property NetTimeout=8;

Property "nettimeout" updated

DGMGRL> edit recovery_appliance raha2 set property MaxFailure=0;

Property "maxfailure" updated

DGMGRL> edit recovery_appliance raha2 set property NetTimeout=8;

Property "nettimeout" updated

DGMGRL> edit database cdb122dr set property RedoRoutes = '(LOCAL : (raha1 async priority=1,

raha2 async priority=2))';

Warning: ORA-16677: Standby database has the same or higher priority than other members specified

in the RedoRoutes group.

Property "redoroutes" updated

DGMGRL> enable configuration;

Enabled.

Archive Parameter Configuration

For this configuration we are not going to use broker, but archive dests parameters. Let’s check that.

Prior 12.1

$ sqlplus / as sysdba

SQL> alter system set log_archive_config = 'dg_config=(cdb121ha,raha1,raha2)';

SQL> alter system set log_archive_dest_state_2=reset;

SQL> alter system set log_archive_dest_state_3=reset;

SQL> alter system set log_archive_dest_2='service=dr_raha1 ASYNC NOAFFIRM delay=0 optional compression=disable max_failure=1 max_connections=1 reopen=10 db_unique_name=raha1 net_timeout=8 alternate=LOG_ARCHIVE_DEST_3 valid_for=(online_logfile,all_roles)';

SQL> alter system set log_archive_dest_3='service=dr_raha2 ASYNC NOAFFIRM delay=0 optional compression=disable max_failure=0 max_connections=1 reopen=300 db_unique_name=raha2 net_timeout=8 alternate=LOG_ARCHIVE_DEST_2 valid_for=(online_logfile,all_roles)';

SQL> alter system set log_archive_dest_state_2=alternate;

SQL> alter system set log_archive_dest_state_3=alternate;

SQL> alter system set log_archive_dest_state_2=enable;

Later 12.2

$ sqlplus / as sysdba

SQL> alter system set log_archive_config = 'dg_config=(cdb122ha,raha1,raha2)';

SQL> alter system set log_archive_dest_2='service=dr_raha1 ASYNC NOAFFIRM delay=0 optional compression=disable max_failure=1 max_connections=1 reopen=10 db_unique_name=raha1 net_timeout=8 group=1 priority=1 valid_for=(online_logfile,all_roles)';

SQL> alter system set log_archive_dest_3='service=dr_raha2 ASYNC NOAFFIRM delay=0 optional compression=disable max_failure=0 max_connections=1 reopen=300 db_unique_name=raha2 net_timeout=8 group=1 priority=2 valid_for=(online_logfile,all_roles)';

SQL> alter system set log_archive_dest_state_2=enable;

SQL> alter system set log_archive_dest_state_3=enable;

Note: In all cases if Redo Shipping does not start, then you may need to restart the protected database. For a RAC environment, this can be done in a rolling fashion.

A restart of the protected database is required if the database was started before the wallet was configured and redo transport was not set up.


Deixe um comentário