Back to Blog
Oracle 15 min readMay 29, 2025

Oracle Data Guard DR Configuration — Primary, Local HA, COLO2 & Far Sync

End-to-end configuration of Oracle Data Guard for a 6-node RAC cluster with Far Sync and COLO2 DR. Covers all four roles: Primary (P), Local HA Standby (S), COLO2 DR Standby (R), and Far Sync (F).

Oracle Data Guard DR Architecture — Primary, Local HA, COLO2, Far Sync
Oracle Data Guard DR Architecture — Primary, Local HA, COLO2, Far Sync

Architecture Overview

Oracle Data Guard naming convention used throughout this guide:

P

Primary

SFDCP

S

Local HA Standby

SFDCS

R

COLO2 DR Standby

SFDCR

F

Far Sync

SFDCF

EE Applications → Far Sync + COLO2 DR
MC Applications → Far Sync + Local HA DR + COLO2 DR

A

Primary Database Configuration

A1. Enable Force Logging

sql
-- Check current force logging state
SELECT force_logging FROM v$database;

-- Enable if not already ON
ALTER DATABASE ENABLE FORCE LOGGING;

A2. Change SYS Password

sql
ALTER USER sys IDENTIFIED BY <SYS_PASSWORD>;

A3. Configure Standby Redo Log Groups

First, check existing online redo log sizes to match standby redo log size:

sql
SET LINES 180
COL MEMBER FOR A60
SELECT b.thread#, a.group#, a.member, b.bytes
FROM v$logfile a, v$log b
WHERE a.group# = b.group#;

SELECT group#, dbid, thread#, sequence#, status
FROM v$standby_log;

Add standby redo log groups — one extra group per thread beyond the online redo log count:

sql
-- Thread 1
ALTER DATABASE ADD STANDBY LOGFILE THREAD 1 GROUP 19 SIZE 128M;
ALTER DATABASE ADD STANDBY LOGFILE THREAD 1 GROUP 20 SIZE 128M;
ALTER DATABASE ADD STANDBY LOGFILE THREAD 1 GROUP 21 SIZE 128M;
ALTER DATABASE ADD STANDBY LOGFILE THREAD 1 GROUP 22 SIZE 128M;
-- Thread 2
ALTER DATABASE ADD STANDBY LOGFILE THREAD 2 GROUP 23 SIZE 128M;
ALTER DATABASE ADD STANDBY LOGFILE THREAD 2 GROUP 24 SIZE 128M;
ALTER DATABASE ADD STANDBY LOGFILE THREAD 2 GROUP 25 SIZE 128M;
ALTER DATABASE ADD STANDBY LOGFILE THREAD 2 GROUP 26 SIZE 128M;
-- Threads 3-6: follow same pattern (groups 27-42)
💡

Add (n+1) standby redo log groups per thread where n = number of online redo log groups per thread.

A4. Set Standby File Management

sql
ALTER SYSTEM SET STANDBY_FILE_MANAGEMENT=AUTO SCOPE=BOTH SID='*';

A5. Set Data Guard Parameters

sql
-- DG member list
ALTER SYSTEM SET LOG_ARCHIVE_CONFIG=
  'DG_CONFIG=(sfdcp,sfdcs,sfdcf,sfdcr)' SCOPE=BOTH SID='*';

-- Far Sync (SYNC, AFFIRM)
ALTER SYSTEM SET LOG_ARCHIVE_DEST_2=
  'service=sfdcf_DGMGRL SYNC AFFIRM
   valid_for=(online_logfile,all_roles) db_unique_name=sfdcf
   delay=0 optional compression=disable
   max_failure=1 reopen=300 net_timeout=30
   group=1 priority=1' SCOPE=BOTH SID='*';

-- Local HA DR (ASYNC, NOAFFIRM)
ALTER SYSTEM SET LOG_ARCHIVE_DEST_3=
  'service=sfdcs_DGMGRL ASYNC NOAFFIRM
   delay=0 optional compression=disable max_failure=0
   reopen=30 db_unique_name=sfdcs net_timeout=30
   group=1 priority=2
   valid_for=(online_logfile,all_roles)' SCOPE=BOTH SID='*';

-- COLO2 DR (ASYNC, NOAFFIRM)
ALTER SYSTEM SET LOG_ARCHIVE_DEST_4=
  'service=sfdcr_DGMGRL ASYNC NOAFFIRM
   delay=0 optional compression=disable max_failure=0
   reopen=30 db_unique_name=sfdcr net_timeout=30
   group=1 priority=3
   valid_for=(online_logfile,all_roles)' SCOPE=BOTH SID='*';

ALTER SYSTEM SET fal_client=sfdcp_DGMGRL SCOPE=BOTH SID='*';
ALTER SYSTEM SET fal_server=sfdcs_DGMGRL,sfdcr_DGMGRL,sfdcf_DGMGRL SCOPE=BOTH SID='*';
ALTER SYSTEM SET service_names='sfdcp,sfdcp_app,sfdcp_DGMGRL';

A6. Create PFILE and Copy Password File

sql
-- Create pfile from spfile (to use as base for standby pfiles)
CREATE PFILE='/tmp/pfile_sfdcp.ora' FROM SPFILE;
bash
-- Copy password file from ASM to /tmp
asmcmd
ASMCMD> pwget --dbuniquename sfdcp
# Returns: +SFDCP_DATA/SFDCP/PASSWORD/pwdsfdcp.xxx
ASMCMD> pwcopy pwdsfdcp.xxx /tmp
ASMCMD> exit

A7. Configure TNS Entries

Add entries to tnsnames.ora on ALL nodes in the cluster. Use SCAN addresses for Primary and Local HA DGMGRL entries:

bash
# Example TNS entry (create similar entries for sfdcs, sfdcf, sfdcr)
sfdcp =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL=TCP)(PORT=1521)(HOST=primary-scan1.domain.internal))
      (ADDRESS = (PROTOCOL=TCP)(PORT=1521)(HOST=primary-scan2.domain.internal))
    )
    (CONNECT_TIMEOUT = 10)
    (RETRY_COUNT = 5)
    (RETRY_DELAY = 2)
    (TRANSPORT_CONNECT_TIMEOUT = 2)
    (LOAD_BALANCE = off)
    (FAILOVER = on)
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = sfdcp)
      (FAILOVER_MODE =
        (TYPE = SELECT)(METHOD = BASIC)(RETRIES = 180)(DELAY = 5)
      )
    )
  )

A8. Create Symbolic Links & Configure Listener

Create symbolic links on ALL cluster nodes (run as oracle user):

bash
ln -s /u01/app/19.0.0/grid/network/admin/listener.ora       /u01/app/oracle/product/19.0.0/db/network/admin

ln -s /u01/app/19.0.0/grid/network/admin/sqlnet.ora       /u01/app/oracle/product/19.0.0/db/network/admin

Add to $GRID_HOME/network/admin/listener.ora on ALL nodes:

bash
# IPC listeners (if not present)
LISTENER_BULK=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=IPC)(KEY=LISTENER_BULK))))
LISTENER_REP=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=IPC)(KEY=LISTENER_REP))))

# Under SID_LIST_LISTENER, add the DG managed entry:
SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (GLOBAL_DBNAME = sfdcp_DGMGRL)
      (SID_NAME      = sfdcp1)           -- change per node
      (ORACLE_HOME   = /u01/app/oracle/product/19.0.0/db)
    )
  )
B

Local HA Standby Configuration

B1. Add DB Entry to DBTAB

bash
vi /home/oracle/scripts/environment/dbtab
# Add entry for the standby SID on ALL cluster nodes

B2. Prepare Standby PFILE

Copy the primary pfile from /tmp and modify key parameters for the standby:

bash
# Key changes to make in pfile_sfdcs.ora:
# 1. db_unique_name  -> 'sfdcs'
# 2. instance_name   -> 'sfdcs1', 'sfdcs2', ... per instance
# 3. fal_client      -> 'ecgs_DGMGRL'
# 4. fal_server      -> 'ecgp_DGMGRL'
# 5. log_archive_dest_1 -> LOCAL with db_unique_name=sfdcs
# 6. service_names   -> 'sfdcs,sfdcp_app,sfdcs_DGMGRL'
# 7. audit_file_dest -> update path for standby
# 8. log_archive_dest_state_2 -> 'DEFER' (standby ships via Far Sync)

Full pfile reference (ecgs = Local HA standby for ecgp primary):

bash
# Critical parameters shown — adapt instance names to your DB
*.db_name='ecgp'                          # same as primary db_name
*.db_unique_name='ecgs'                   # standby unique name
*.fal_client='ecgs_DGMGRL'
*.fal_server='ecgp_DGMGRL'
*.log_archive_config='DG_CONFIG=(ecgs,ecgp,ecgf,ecgr)'
*.log_archive_dest_1='LOCATION=USE_DB_RECOVERY_FILE_DEST VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=ecgs mandatory'
*.log_archive_dest_state_2='DEFER'        # defer until DG Broker enables
*.standby_file_management='AUTO'
*.dg_broker_start=TRUE
ecgs1.instance_number=1
ecgs2.instance_number=2
# ... continue for all nodes
ecgs1.undo_tablespace='UNDO01'
ecgs2.undo_tablespace='UNDO02'

B3. Create Symbolic Links & Listener on Local HA

bash
# Same as primary — run on ALL Local HA nodes
ln -s /u01/app/19.0.0/grid/network/admin/listener.ora       /u01/app/oracle/product/19.0.0/db/network/admin
ln -s /u01/app/19.0.0/grid/network/admin/sqlnet.ora       /u01/app/oracle/product/19.0.0/db/network/admin

# Add to listener.ora:
SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (GLOBAL_DBNAME = sfdcs_DGMGRL)
      (SID_NAME      = sfdcs1)
      (ORACLE_HOME   = /u01/app/oracle/product/19.0.0/db)
    )
  )

B4. Start Standby in NOMOUNT, Create SPFILE

sql
-- Start instance in nomount using modified pfile
STARTUP NOMOUNT PFILE='/tmp/pfile_sfdcs.ora';

-- Create SPFILE in ASM
CREATE SPFILE='+SFDCP_DATA' FROM PFILE='/tmp/pfile_sfdcs.ora';

SHUTDOWN IMMEDIATE;
STARTUP NOMOUNT;

ALTER SYSTEM SET service_names='sfdcs,sfdcs_app,sfdcs_DGMGRL';
EXIT;

B5. Copy Password File to ASM

bash
# As root: give oracle access to password file in /tmp
chmod 777 /tmp/pwdsfdcp.xxx

# Copy to ASM diskgroup for standby
asmcmd
ASMCMD> pwcopy /tmp/pwdsfdcp.xxx +SFDCP_DATA/SFDCS/orapwsfdcs

B6. Register Database with SRVCTL

bash
srvctl add database -d sfdcs   -o /u01/app/oracle/product/19.0.0/db   -r PHYSICAL_STANDBY   -startoption MOUNT   -spfile +SFDCP_DATA/SFDCS/PARAMETERFILE/spfile.xxx   -pwfile +SFDCP_DATA/SFDCS/orapwsfdcs

# Add instances (one per node)
srvctl add instance -d sfdcs -i sfdcs1 -n node1
srvctl add instance -d sfdcs -i sfdcs2 -n node2
srvctl add instance -d sfdcs -i sfdcs3 -n node3
srvctl add instance -d sfdcs -i sfdcs4 -n node4
srvctl add instance -d sfdcs -i sfdcs5 -n node5
srvctl add instance -d sfdcs -i sfdcs6 -n node6

srvctl modify database -d sfdcs -diskgroup SFDCP_DATA,SFDCP_RECO

# Add services
srvctl add service -db sfdcs -service sfdcp_app   -preferred "sfdcs1,sfdcs2" -available "sfdcs3,sfdcs4,sfdcs5,sfdcs6"   -role PRIMARY -notification TRUE   -failovertype SELECT -failovermethod BASIC -failoverdelay 5 -failoverretry 180   -commit_outcome true

srvctl add service -db sfdcs -service sfdcs_DGMGRL   -preferred "sfdcs1,sfdcs2,sfdcs3,sfdcs4,sfdcs5,sfdcs6"   -role PRIMARY -notification TRUE   -failovertype SELECT -failovermethod BASIC -failoverdelay 5 -failoverretry 180   -commit_outcome true

srvctl start service -d sfdcs -s sfdcs_app
srvctl start service -d sfdcs -s sfdcs_DGMGRL

B7. Verify Connectivity

bash
# Verify listener
lsnrctl status LISTENER
lsnrctl status LISTENER_BULK

# Test TNS connectivity
tnsping sfdcp_DGMGRL
tnsping sfdcs_DGMGRL

# Test RMAN login
rman
RMAN> connect TARGET sys/<SYS_PASSWORD>@sfdcp_DGMGRL;
RMAN> connect AUXILIARY sys/<SYS_PASSWORD>@sfdcs_DGMGRL;
RMAN> exit

B8. Run RMAN Active Duplicate

Save as /tmp/rman_dup.sh and run with nohup:

bash
nohup sh /tmp/rman_dup.sh &

# rman_dup.sh contents:
rman TARGET sys/<SYS_PASSWORD>@sfdcp_app      AUXILIARY sys/<SYS_PASSWORD>@sfdcs_DGMGRL << EOF
set echo on;
run {
  allocate channel prmy1 type disk;
  allocate channel prmy2 type disk;
  allocate channel prmy3 type disk;
  allocate channel prmy4 type disk;
  allocate auxiliary channel stby1 type disk;
  allocate auxiliary channel stby2 type disk;
  allocate auxiliary channel stby3 type disk;
  allocate auxiliary channel stby4 type disk;
  DUPLICATE TARGET DATABASE FOR STANDBY
    FROM ACTIVE DATABASE DORECOVER NOFILENAMECHECK;
}
exit
EOF
💡

Monitor progress in nohup.out. Do not proceed until RMAN returns "Finished Duplicate Db".

B9. Recreate Standby Redo Logs & Enable MRP

sql
-- Drop all groups copied from primary
ALTER DATABASE DROP STANDBY LOGFILE GROUP 19;
-- ... repeat for groups 20-42

-- Verify all dropped
SELECT group#, SUM(bytes/1024/1024) "Size MB"
FROM v$standby_log GROUP BY group#;

-- Recreate standby redo logs (same as primary step A3)
ALTER DATABASE ADD STANDBY LOGFILE THREAD 1 GROUP 19 SIZE 128M;
-- ... add groups 19-42 across threads 1-6

-- Enable MRP
ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT FROM SESSION;

B10. Verify Sync & Archive Deletion Policy

sql
-- Check MRP process status
SELECT process, status, thread#, sequence#
FROM gv$managed_standby;

SELECT * FROM v$dataguard_status;
SELECT * FROM gv$archive_gap;
bash
# Auto-delete applied archives from standby RECO
rman target /
RMAN> CONFIGURE ARCHIVELOG DELETION POLICY TO APPLIED ON ALL STANDBY;
C

COLO2 DR Standby Configuration

C1–C7. Initial Setup

Steps 1–7 for COLO2 are identical to Local HA (Parts B1–B7) with these differences:

  • Use sfdcr (R suffix) as the DB unique name
  • Update pfile: db_unique_name='sfdcr', fal_client='ecgr_DGMGRL'
  • Add dg_broker_config_file1/2 parameters pointing to COLO2 ASM
  • COLO2 uses LISTENER_REP (not LISTENER_BULK)
  • COLO2 nodes are in a separate datacenter (e.g., r2lg* prefix)
bash
# COLO2-specific listener check
lsnrctl status LISTENER      # standard
lsnrctl status LISTENER_REP  # COLO2 uses REP not BULK

C2. RMAN Duplicate with More Channels (Large DB)

For large databases across datacenters, use more channels for better throughput:

bash
rman TARGET sys/<SYS_PASSWORD>@primarydb_DGMGRL      AUXILIARY sys/<SYS_PASSWORD>@sfdcr_DGMGRL << EOF
set echo on;
run {
  allocate channel prd1 type disk;
  -- ... prd2 through prd16
  allocate channel prd16 type disk;
  allocate auxiliary channel stand1 type disk;
  -- ... stand2 through stand16
  allocate auxiliary channel stand16 type disk;
  DUPLICATE TARGET DATABASE FOR STANDBY
    FROM ACTIVE DATABASE DORECOVER NOFILENAMECHECK;
}
exit
EOF
D

Far Sync Instance Configuration

D1. Far Sync Pfile Key Differences

Far Sync is a single-node, non-RAC instance — no ASM, uses local filesystem:

bash
# Far Sync pfile key parameters (ecgf = Far Sync for ecgp primary)
*.db_unique_name='ecgf'
*.db_name='ecgp'                          # same db_name as primary
*.cluster_database=FALSE                  # NOT a RAC instance
*.fal_client='ecgf_DGMGRL'
*.fal_server='ecgp_DGMGRL','ecgs_DGMGRL','ecgr_DGMGRL'

# Far Sync forwards to COLO2 DR
*.log_archive_dest_2='service="ecgr_DGMGRL" ASYNC NOAFFIRM
  delay=0 optional compression=disable max_failure=0
  reopen=300 db_unique_name="ecgr" net_timeout=30
  valid_for=(standby_logfile,all_roles)'
*.log_archive_dest_state_2='ENABLE'

# Filesystem paths (no ASM on Far Sync)
*.control_files='/u01/data/ecgf/controlfile/control01.ctl',
                '/u01/data/ecgf/fast_recovery_area/controlfile/control02.ctl'
*.db_create_file_dest='/u01/data/ecgf/'
*.db_recovery_file_dest='/u01/data/ecgf/fast_recovery_area/'
*.memory_target=2147483648                # typically smaller than primary
*.processes=200

D2. Create Required Directories on Far Sync

bash
mkdir -p /u01/app/oracle/admin/sfdcf/adump
mkdir -p /u01/data/sfdcf/controlfile
mkdir -p /u01/data/sfdcf/fast_recovery_area/controlfile
mkdir -p /u01/data/sfdcf/onlinelog
mkdir -p /u01/data/sfdcf/fast_recovery_area

D3. Create Far Sync Control File on Primary

sql
-- Run on Primary
ALTER DATABASE CREATE FAR SYNC INSTANCE CONTROLFILE AS
  '/oracle/backup/SFDCP_DR/SFDCF/stbyfarsyncsfdcp.ctl';

D4. Copy Files to Far Sync Server

bash
# From Primary, copy pfile, password file, and Far Sync controlfile
cd /tmp
sftp test_user@<far-sync-server-ip>
sftp> cd /tmp
sftp> put pfile_sfdcp.ora
sftp> put pwdsfdcp.xxx
sftp> put stbyfarsyncsfdcp.ctl

D5. Set Up Control File & Password File on Far Sync

bash
# As root on Far Sync server
chown -R oracle:oinstall /tmp/stbyfarsyncsfdcp.ctl
chmod 777 /tmp/stbyfarsyncsfdcp.ctl

# As oracle
cp /tmp/stbyfarsyncsfdcp.ctl /u01/data/sfdcf/controlfile/control01.ctl
cp /tmp/stbyfarsyncsfdcp.ctl /u01/data/sfdcf/fast_recovery_area/controlfile/control02.ctl
cp /tmp/pwdsfdcp.xxx $ORACLE_HOME/dbs/orapwsfdcf

D6. Start Far Sync & Create SPFILE

sql
STARTUP NOMOUNT PFILE='/tmp/pfile_sfdcf.ora';
CREATE SPFILE FROM PFILE='/tmp/pfile_sfdcf.ora';
SHUTDOWN IMMEDIATE;
EXIT;

-- Restart and mount
STARTUP MOUNT;

D7. Listener Entry for Far Sync

bash
# Add to $ORACLE_HOME/network/admin/listener.ora on Far Sync server
SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (GLOBAL_DBNAME = sfdcf_DGMGRL)
      (SID_NAME      = sfdcf)
      (ORACLE_HOME   = /u01/app/oracle/product/19.0.0/db)
    )
  )

lsnrctl reload LISTENER

D8. Standby Redo Logs & Archive Deletion Policy on Far Sync

sql
-- Drop existing standby redo log groups (19-42)
ALTER DATABASE DROP STANDBY LOGFILE GROUP 19;
-- ... repeat for 20-42

-- Recreate
ALTER DATABASE ADD STANDBY LOGFILE THREAD 1 GROUP 19 SIZE 128M;
-- ... add groups 20-42
bash
rman target /
RMAN> CONFIGURE ARCHIVELOG DELETION POLICY TO APPLIED ON ALL STANDBY;
E

Data Guard Broker Configuration

E1. Enable DG Broker on All Members

Run on each member (Primary, Local HA, COLO2, Far Sync) — create DATAGUARDCONFIG directories first in ASM:

bash
# On ASM nodes (Primary, Local HA, COLO2)
asmcmd
ASMCMD> cd +SFDCP_DATA/SFDCP
ASMCMD> mkdir DATAGUARDCONFIG
ASMCMD> exit
sql
-- Run per member, adjust paths for each
ALTER SYSTEM SET dg_broker_start=FALSE;
ALTER SYSTEM SET dg_broker_config_file1='+SFDCP_DATA/SFDCP/DATAGUARDCONFIG/dr1sfdcp.dat' SCOPE=BOTH SID='*';
ALTER SYSTEM SET dg_broker_config_file2='+SFDCP_RECO/SFDCP/DATAGUARDCONFIG/dr2sfdcp.dat' SCOPE=BOTH SID='*';
ALTER SYSTEM SET dg_broker_start=TRUE SCOPE=BOTH SID='*';

-- Far Sync uses filesystem paths:
-- dg_broker_config_file1='/u01/data/sfdcf/controlfile/dr1sfdcf.dat'
-- dg_broker_config_file2='/u01/data/sfdcf/fast_recovery_area/controlfile/dr2sfdcf.dat'

E2. Disable Manual Archive Destinations Before Broker

sql
-- Clear manual archive destinations — DG Broker will manage them
ALTER SYSTEM SET log_archive_dest_2='';
ALTER SYSTEM SET log_archive_dest_3='';
ALTER SYSTEM SET log_archive_dest_4='';

E3. Create DG Broker Configuration (MC Applications)

bash
dgmgrl sys/<SYS_PASSWORD>@sfdcp_DGMGRL

-- Create configuration
CREATE CONFIGURATION 'sfdcp' AS
  PRIMARY DATABASE IS 'sfdcp'
  CONNECT IDENTIFIER IS 'sfdcp_DGMGRL';

-- Add Local HA standby
ADD DATABASE 'sfdcs' AS
  CONNECT IDENTIFIER IS 'sfdcs_DGMGRL'
  MAINTAINED AS PHYSICAL;

-- Add Far Sync
ADD FAR_SYNC 'sfdcf' AS
  CONNECT IDENTIFIER IS 'sfdcf_DGMGRL';

-- Add COLO2 DR
ADD DATABASE 'sfdcr' AS
  CONNECT IDENTIFIER IS 'sfdcr_DGMGRL'
  MAINTAINED AS PHYSICAL;

SHOW CONFIGURATION;
ENABLE CONFIGURATION;
SHOW CONFIGURATION;

E4. Configure Redo Routes (MC Applications)

bash
-- Primary: sync to Far Sync (priority 1), async to COLO2 (priority 2), async to Local HA
EDIT DATABASE sfdcp SET PROPERTY
  RedoRoutes='(LOCAL : (sfdcf SYNC PRIORITY=1, sfdcr ASYNC PRIORITY=2), sfdcs ASYNC)';

-- Local HA: same routing pattern as primary (for switchover scenarios)
EDIT DATABASE sfdcs SET PROPERTY
  RedoRoutes='(LOCAL : (sfdcf SYNC PRIORITY=1, sfdcr ASYNC PRIORITY=2), sfdcp ASYNC)';

-- Far Sync: forwards to COLO2 DR
EDIT FAR_SYNC sfdcf SET PROPERTY RedoRoutes='(sfdcp : sfdcr ASYNC)';

-- COLO2 DR: sends back to primary and local HA during switchover
EDIT DATABASE sfdcr SET PROPERTY RedoRoutes='(LOCAL : sfdcp ASYNC, sfdcs ASYNC)';

-- Set apply instances
EDIT DATABASE sfdcr SET STATE='APPLY-ON' WITH APPLY INSTANCE='sfdcr1';
EDIT DATABASE sfdcs SET STATE='APPLY-ON' WITH APPLY INSTANCE='sfdcs1';

-- Set lag thresholds (seconds)
EDIT DATABASE sfdcp SET PROPERTY NetTimeout=45;
EDIT DATABASE sfdcr SET PROPERTY ApplyLagThreshold=30;
EDIT DATABASE sfdcs SET PROPERTY ApplyLagThreshold=30;
EDIT DATABASE sfdcr SET PROPERTY TransportLagThreshold=30;
EDIT DATABASE sfdcs SET PROPERTY TransportLagThreshold=30;

SHOW CONFIGURATION VERBOSE;

E5. Configure Redo Routes (EE Applications — No Local HA)

bash
-- EE Apps: Primary → Far Sync (SYNC) → COLO2 DR (ASYNC)
EDIT DATABASE sfdcp SET PROPERTY
  RedoRoutes='(LOCAL : (sfdcf SYNC PRIORITY=1, sfdcr ASYNC PRIORITY=2))';

EDIT FAR_SYNC sfdcf SET PROPERTY RedoRoutes='(sfdcp : sfdcr ASYNC)';

EDIT DATABASE sfdcr SET PROPERTY RedoRoutes='(LOCAL : sfdcp ASYNC)';

EDIT DATABASE sfdcp SET STATE='APPLY-ON' WITH APPLY INSTANCE='sfdcp1';
EDIT DATABASE sfdcr SET STATE='APPLY-ON' WITH APPLY INSTANCE='sfdcr1';

SHOW CONFIGURATION VERBOSE;
💡

Configuration shows SUCCESS with no warnings before proceeding.

E6. Set Archive Deletion Policy on Primary

bash
rman target /
RMAN> CONFIGURE ARCHIVELOG DELETION POLICY TO SHIPPED TO ALL STANDBY;
All postsOracle · DataGuard · RAC · DR · RMAN

naresh@gowda:~$ built with Next.js + Tailwind + Framer Motion