Oracle Data Guard and Data Guard Broker - Practical DBA
Guide
1. Overview
Oracle Data Guard ensures high availability, data protection, and disaster recovery. It maintains
synchronized standby copies of a production database.
2. Core Components
Primary Database (source), Standby Database (replica), Redo Transport (transfer redo), Apply
Services (apply redo), and Role Transitions (Switchover/Failover).
3. Types of Standby Databases
• Physical Standby - Block-for-block copy using MRP (Redo Apply)
• Logical Standby - SQL statements applied via LSP (SQL Apply)
• Snapshot Standby - Read-write mode for testing
4. Protection Modes
• Maximum Protection - Zero data loss, synchronous commit
• Maximum Availability - Zero loss if standby available
• Maximum Performance - Best speed, minimal data loss
5. Redo Transport Methods
• LGWR SYNC AFFIRM - Synchronous redo transfer
• LGWR ASYNC NOAFFIRM - Asynchronous redo transfer
• ARCH - Archive process-based redo shipping
6. Real-Time Apply
Applies redo as received, improving RPO. Example: ALTER DATABASE RECOVER MANAGED
STANDBY DATABASE USING CURRENT LOGFILE DISCONNECT FROM SESSION;
7. Switchover and Failover
Switchover (Planned): ALTER DATABASE COMMIT TO SWITCHOVER TO STANDBY;
Failover (Unplanned): ALTER DATABASE ACTIVATE STANDBY DATABASE;
8. Manual Configuration
PRIMARY:
ALTER DATABASE FORCE LOGGING;
ALTER SYSTEM SET LOG_ARCHIVE_CONFIG='DG_CONFIG=(PRIM,STBY)';
ALTER DATABASE CREATE STANDBY CONTROLFILE AS '/backup/[Link]';
STANDBY:
STARTUP NOMOUNT;
ALTER DATABASE MOUNT STANDBY DATABASE;
ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT FROM
SESSION;
9. Monitoring Commands
SELECT OPEN_MODE, DATABASE_ROLE FROM V$DATABASE;
SELECT DEST_ID, STATUS, ERROR FROM V$ARCHIVE_DEST_STATUS;
SELECT NAME, VALUE FROM V$DATAGUARD_STATS;
10. Data Guard Broker (DGMGRL)
Broker automates configuration and management. CLI: dgmgrl
11. DGMGRL Setup
ALTER SYSTEM SET DG_BROKER_START=TRUE;
CREATE CONFIGURATION 'DGConfig' AS PRIMARY DATABASE IS 'PRIM' CONNECT
IDENTIFIER IS PRIM;
ADD DATABASE 'STBY' AS CONNECT IDENTIFIER IS STBY MAINTAINED AS PHYSICAL;
ENABLE CONFIGURATION;
12. Role Transitions (Broker)
SWITCHOVER TO 'STBY';
FAILOVER TO 'STBY';
REINSTATE DATABASE 'PRIM';
13. Monitoring Views
V$DATAGUARD_CONFIG - Configuration details
V$DATAGUARD_STATS - Lag info
V$MANAGED_STANDBY - MRP/LSP status
14. Troubleshooting
Primary: SELECT ERROR FROM V$ARCHIVE_DEST_STATUS;
Standby: ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;
ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE
DISCONNECT;
15. Real-Time Scenario - Resync Out-of-Sync Standby
1. Identify missing archives: SELECT SEQUENCE#, APPLIED FROM V$ARCHIVED_LOG;
2. Copy missing logs: scp /arch/1_20500_*.arc oracle@stby:/arch/
3. Register logs: ALTER DATABASE REGISTER LOGFILE '/arch/1_20500_*.arc';
4. Resume recovery: ALTER DATABASE RECOVER MANAGED STANDBY DATABASE
DISCONNECT;
16. Best Practices
• Use real-time apply
• Create standby redo logs (>= primary)
• Monitor lag
• Enable Flashback
• Use DGMGRL for automation