Data Guard

58.1 Concepts

The primary ships redo to one or more standby databases (redo transport → redo apply).

Physical standby (block-for-block, Redo Apply/MRP). Logical standby (SQL Apply). Snapshot standby (temporarily read-write for testing).

Active Data Guard (licensed option): read-only queries while applying redo, real-time query, automatic block repair, DML redirection (19c), far sync, global data services, RMAN backups from the standby with block change tracking.

Far Sync instance: zero data loss over long distances.

58.2 Protection Modes

Impact on Primary Maximum Performance (default) Maximum Availability SYNC / FASTSYNC (AFFIRM / NOAFFIRM) Zero (unless double failure)

Small latency, falls back if the standby is unreachable Maximum Protection

Primary shuts down if no standby acknowledges

58.3 Setup Outline (Physical Standby)

Primary: ARCHIVELOG, FORCE LOGGING, standby redo logs (SRLs: one more group than online redo per thread), DB_UNIQUE_NAME, LOG_ARCHIVE_CONFIG, LOG_ARCHIVE_DEST_2, FAL_SERVER, STANDBY_FILE_MANAGEMENT=AUTO, password file copied to the standby, TNS entries on both sides.

Create the standby: RMAN DUPLICATE TARGET DATABASE FOR STANDBY FROM ACTIVE DATABASE;

Start redo apply: ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT;

Configure the Data Guard Broker (DG_BROKER_START=TRUE).

58.4 Data Guard Broker (DGMGRL)

Rolling upgrades with a transient logical standby (DBMS_ROLLING). Standby-first patching.

23ai: PDB-level Data Guard (DGPDB).

dgmgrl sys@prim
DGMGRL> CREATE CONFIGURATION dgconf AS PRIMARY DATABASE IS prim CONNECT IDENTIFIER IS prim;
DGMGRL> ADD DATABASE stby AS CONNECT IDENTIFIER IS stby MAINTAINED AS PHYSICAL;
DGMGRL> ENABLE CONFIGURATION;
DGMGRL> SHOW CONFIGURATION;
DGMGRL> SHOW DATABASE stby;
DGMGRL> VALIDATE DATABASE stby;
DGMGRL> SWITCHOVER TO stby;          -- planned, no data loss
DGMGRL> FAILOVER TO stby;            -- unplanned
DGMGRL> REINSTATE DATABASE prim;     -- needs Flashback Database
DGMGRL> EDIT CONFIGURATION SET PROTECTION MODE AS MaxAvailability;
DGMGRL> ENABLE FAST_START FAILOVER;  -- automatic failover with an Observer
DGMGRL> CONVERT DATABASE stby TO SNAPSHOT STANDBY;
-- Monitoring
SELECT name, value, time_computed FROM v$dataguard_stats;        -- transport lag, apply lag
SELECT process, status, thread#, sequence# FROM v$managed_standby;   -- (V$DATAGUARD_PROCESS in 12.2+)
SELECT dest_id, status, error FROM v$archive_dest_status;
SELECT database_role, open_mode, protection_mode, switchover_status FROM v$database;