Friday, March 20, 2026

Configuring Active Data Guard in Oracle 26AI Multitenant Database

 

Configuring Active Data Guard in Oracle 26AI Multitenant Database


1. Introduction

Active Data Guard enables a standby database to be open in read-only mode while continuously applying redo logs from the primary database. This provides:

  • High availability

  • Disaster recovery

  • Real-time reporting

This document provides a complete step-by-step guide to configure Active Data Guard in an Oracle 26AI Multitenant environment.


2. Prerequisites

  • Source and Target servers with Oracle Linux 8/9

  • Primary server with Oracle 26AI Database installed

  • Standby server with Oracle 26AI Software installed

  • Network connectivity between servers (tnsping must work)


3. Environment Details

  • Database Name: AIDB

  • PDB Name: AIPDB

  • Primary Host: 192.168.226.129

  • Standby Host: 192.168.226.130


4. Network Configuration

4.1 Primary Database – TNS Configuration

File location:

$ORACLE_HOME/network/admin/tnsnames.ora
LISTENER_AIDB =
  (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.226.129)(PORT = 1521))

PRIMARY =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.226.129)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = PRIMARY)
    )
  )

AIPDB =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.226.129)(PORT = 1521))
    (CONNECT_DATA =
      (SERVICE_NAME = AIPDB)
    )
  )

STANDBY =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.226.130)(PORT = 1521))
    (CONNECT_DATA =
      (SERVICE_NAME = STANDBY)
    )
  )

4.2 Primary Listener Configuration

LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.226.129)(PORT = 1521))
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
    )
  )

SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (GLOBAL_DBNAME = PRIMARY)
      (ORACLE_HOME = /u01/app/oracle/product/home)
      (SID_NAME = AIDB)
    )
  )

4.3 Standby Database – TNS Configuration

LISTENER_AIDB =
  (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.226.130)(PORT = 1521))

STANDBY =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.226.130)(PORT = 1521))
    (CONNECT_DATA =
      (SERVICE_NAME = STANDBY)
    )
  )

PRIMARY =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.226.129)(PORT = 1521))
    (CONNECT_DATA =
      (SERVICE_NAME = PRIMARY)
    )
  )

4.4 Standby Listener Configuration

LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.226.130)(PORT = 1521))
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
    )
  )

SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (GLOBAL_DBNAME = STANDBY)
      (ORACLE_HOME = /u01/app/oracle/product/home)
      (SID_NAME = AIDB)
    )
  )

5. Primary Database Configuration

5.1 Enable Archivelog Mode

STARTUP MOUNT;
ALTER DATABASE ARCHIVELOG;
ALTER DATABASE OPEN;

5.2 Enable Force Logging

ALTER DATABASE FORCE LOGGING;

5.3 Set Data Guard Parameters

ALTER SYSTEM SET db_unique_name='PRIMARY' SCOPE=SPFILE;

ALTER SYSTEM SET log_archive_config='DG_CONFIG=(PRIMARY,STANDBY)' SCOPE=BOTH;

ALTER SYSTEM SET log_archive_dest_1=
'LOCATION=/u01/app/oracle/product/home/dbs/arch
VALID_FOR=(ALL_LOGFILES,ALL_ROLES)
DB_UNIQUE_NAME=PRIMARY' SCOPE=BOTH;

ALTER SYSTEM SET log_archive_dest_2=
'SERVICE=STANDBY
 ASYNC
 NOAFFIRM
 VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE)
 DB_UNIQUE_NAME=STANDBY' SCOPE=BOTH;

ALTER SYSTEM SET FAL_CLIENT=PRIMARY SCOPE=BOTH;
ALTER SYSTEM SET FAL_SERVER=STANDBY SCOPE=BOTH;

ALTER SYSTEM SET standby_file_management='AUTO' SCOPE=BOTH;

ALTER SYSTEM SET db_file_name_convert=
'/u01/.../AIDB','/u01/.../AIDB' SCOPE=BOTH;

ALTER SYSTEM SET log_file_name_convert=
'/u01/.../AIDB','/u01/.../AIDB' SCOPE=BOTH;

5.4 Create Standby Redo Logs

ALTER DATABASE ADD STANDBY LOGFILE GROUP 4 ('/path/srl04.log') SIZE 200M;
ALTER DATABASE ADD STANDBY LOGFILE GROUP 5 ('/path/srl05.log') SIZE 200M;
ALTER DATABASE ADD STANDBY LOGFILE GROUP 6 ('/path/srl06.log') SIZE 200M;
ALTER DATABASE ADD STANDBY LOGFILE GROUP 7 ('/path/srl07.log') SIZE 200M;

5.5 Copy Required Files

scp initAIDB.ora orapwAIDB oracle@192.168.226.130:$ORACLE_HOME/dbs

6. Standby Database Configuration

6.1 Start Standby in NOMOUNT

STARTUP NOMOUNT PFILE='initAIDB.ora';

6.2 Duplicate Database Using RMAN

rman target sys/password@PRIMARY auxiliary sys/password@STANDBY

DUPLICATE TARGET DATABASE
FOR STANDBY
FROM ACTIVE DATABASE
NOFILENAMECHECK;

6.3 Verify Database State

SELECT name, open_mode FROM v$database;

7. Enable Active Data Guard

7.1 Open Standby in Read-Only Mode

ALTER DATABASE OPEN READ ONLY;

7.2 Start Managed Recovery Process (MRP)

ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT;

8. Validation Checks

8.1 Check MRP Status

SELECT process, status FROM v$managed_standby;

8.2 Check Lag

SELECT name, value
FROM v$dataguard_stats
WHERE name IN ('transport lag','apply lag');

8.3 Archive Gap Check

SELECT * FROM v$archive_gap;

8.4 Synchronization Check

SELECT
  arch.sequence# AS received,
  appl.sequence# AS applied,
  (arch.sequence# - appl.sequence#) AS gap
FROM
  (SELECT MAX(sequence#) sequence# FROM v$archived_log) arch,
  (SELECT MAX(sequence#) sequence# FROM v$log_history) appl;

9. Switchover Process

9.1 On Primary

ALTER DATABASE COMMIT TO SWITCHOVER TO PHYSICAL STANDBY WITH SESSION SHUTDOWN;
STARTUP MOUNT;
ALTER DATABASE OPEN READ ONLY;

9.2 On Standby

ALTER DATABASE COMMIT TO SWITCHOVER TO PRIMARY;
ALTER DATABASE OPEN;

9.3 Restart MRP

ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT;

10. Useful Monitoring Queries

MRP Status

SELECT process, status FROM v$managed_standby;

Lag Check

SELECT name, value FROM v$dataguard_stats;

Archive Gap

SELECT * FROM v$archive_gap;

11. Conclusion

Active Data Guard setup involves:

  1. Network configuration

  2. Primary database preparation

  3. Standby database creation using RMAN

  4. Enabling redo apply (MRP)

  5. Validating synchronization and lag

A properly configured Active Data Guard environment ensures high availability, data protection, and real-time reporting capabilities.


No comments:

Post a Comment