oracledba.help
DataGuard

Disable Data Guard Pre Import\Refresh of PRI

  1. Stop Redo Transport
  2. Cancel Managed Recovery
  3. Turn Off Flashback
  4. Shutdown Standby
  5. Disable Log Shipping
  6. Disable Archivelog Mode (ArchiveLogMode.enable.sql)
  7. Monitoring

Overview

Cleanly disengage the Standby (SB) environment and Data Guard processes before doing a large Data Pump refresh on the Primary.

 Role     Abbrev  Hostname  db_unique_name
 -------  ------  --------  --------------
 Primary  PRI     d2-oratrn-s01     dnatra
 StandBy  SB      d1-oratrn-s01     dnatra_sb
  • Change entries to match your PRI and SB environment.
  • SELECT value FROM v$parameter WHERE name = 'db_unique_name';

Your configuration uses LGWR ASYNC transport and active Data Guard apply.

✅ Step-by-Step Disable Procedure

🔸 1. On PRI: Stop redo transport.

ALTER SYSTEM SET LOG_ARCHIVE_DEST_STATE_2=DEFER SCOPE=BOTH;
This halts redo log shipping to the Standby.
Check status:
SELECT DEST_ID, STATUS, ERROR FROM V$ARCHIVE_DEST_STATUS WHERE DEST_ID = 2;

Expect STATUS=DEFERRED.

🔸 2. On SB: Cancel managed recovery

 ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;

🔸 3. On BOTH: Turn off Flashback (reduces overhead)

ALTER DATABASE FLASHBACK OFF;

This command does not require a database bounce.

🔸 4. On SB: Shut down.

 SHUTDOWN IMMEDIATE

 (If planning to rebuild SB from scratch)
 rm -rf /u01/app/oracle/oradata/dnatra/*
 rm -rf /u02/fra/dnatra/*
 rm -f  /u03/controlfiles/dnatra/control01.ctl

🔸 5. On PRI: Disable log shipping config (optional cleanup)

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

Skip if you plan to restore DG immediately after refresh and want to keep config.

If rebuilding SB later with new SRLS and sizes, on PRI: Prevent SRL log allocation.
--Generally this is not needed though.--

SELECT GROUP#, THREAD# FROM V$STANDBY_LOG;

-- Drop standby logs if you need space or want to recreate clean
ALTER DATABASE DROP STANDBY LOGFILE GROUP <group#>;

🔸 6. On PRI, disable Archivelog mode (ArchiveLogMode.disable.sql):

shutdown immediate
connect / as sysdba
startup mount
alter database noarchivelog;
alter database open;
select log_mode from v$database;

If you can't disable, the below script will purge created archive logs during import:

while true; do
rman target / <<EOF
CROSSCHECK ARCHIVELOG ALL;
DELETE NOPROMPT ARCHIVELOG ALL;
DELETE NOPROMPT OBSOLETE;
EOF
sleep 120
done

Run from a separate console session.

🔸 7. Monitoring Check redo status on Primary:

 SELECT SEQUENCE#, APPLIED, STATUS FROM V$ARCHIVED_LOG ORDER BY SEQUENCE# DESC;

Check FRA pressure:

 SELECT SPACE_USED/1024/1024/1024 AS USED_GB, SPACE_LIMIT/1024/1024/1024 AS LIMIT_GB
 FROM V$RECOVERY_FILE_DEST;

🧠 Tips & Gotchas

 Gotcha / Risk	                    Mitigation
 FRA overload during refresh        Disable redo transport early (Step 1)
 Temp space exhaustion	            Monitor temp usage with v$sort_usage
 SB appearing out-of-sync or stale  Rebuild from active DB when refresh completes
 Forgetting to resume transport     Include post-refresh checklist (see below)
 Flashback logs filling FRA         Disable flashback on SB if not needed

APPENDIX

ArchiveLogMode.enable.sql

shutdown immediate
connect / as sysdba
startup mount
alter database archivelog;
alter database open;
select log_mode from v$database;