Creating Physical Standby Database without Backup of Primary Database

1. Primary Database Preparation

Ensure the primary database is configured for Data Guard.

Check Database Mode

SELECT log_mode FROM v$database;

Database must be in ARCHIVELOG mode.

If not:

shutdown immediate;
startup mount;
alter database archivelog;
alter database open;

Enable FORCE LOGGING

Ensures all operations generate redo.

ALTER DATABASE FORCE LOGGING;

Verify:

SELECT force_logging FROM v$database;

Create Standby Redo Logs

Standby redo logs should be (Online Redo Groups + 1).

Example:

ALTER DATABASE ADD STANDBY LOGFILE 
GROUP 4 ('/u01/oradata/redo04.log') SIZE 500M;
ALTER DATABASE ADD STANDBY LOGFILE
GROUP 5 ('/u01/oradata/redo05.log') SIZE 500M;
ALTER DATABASE ADD STANDBY LOGFILE
GROUP 6 ('/u01/oradata/redo06.log') SIZE 500M;

2. Configure Initialization Parameters

Edit spfile / pfile on the primary database.

ALTER SYSTEM SET LOG_ARCHIVE_CONFIG='DG_CONFIG=(PRIMDB,STBYDB)';
ALTER SYSTEM SET LOG_ARCHIVE_DEST_1=
'LOCATION=/arch VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=PRIMDB';
ALTER SYSTEM SET LOG_ARCHIVE_DEST_2=
'SERVICE=STBYDB ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=STBYDB';
ALTER SYSTEM SET LOG_ARCHIVE_DEST_STATE_2=ENABLE;
ALTER SYSTEM SET FAL_SERVER=STBYDB;
ALTER SYSTEM SET FAL_CLIENT=PRIMDB;
ALTER SYSTEM SET STANDBY_FILE_MANAGEMENT=AUTO;

3. Configure Listener and TNS

On both servers, configure listener.ora and tnsnames.ora.

Example tnsnames.ora

PRIMDB =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = primary_host)(PORT = 1521))
(CONNECT_DATA =
(SERVICE_NAME = PRIMDB)
)
)STBYDB =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = standby_host)(PORT = 1521))
(CONNECT_DATA =
(SERVICE_NAME = STBYDB)
)
)

Test connectivity:

tnsping PRIMDB
tnsping STBYDB

4. Create Password File

Password files must be identical.

On primary:

orapwd file=$ORACLE_HOME/dbs/orapwPRIMDB password=oracle entries=10

Copy to standby server:

scp orapwPRIMDB standby:/u01/app/oracle/product/19/dbhome/dbs/orapwSTBYDB

5. Create Standby Database Using RMAN Duplicate

Start standby instance in NOMOUNT.

startup nomount;

Run RMAN from standby server:

rman target sys@PRIMDB auxiliary sys@STBYDB

Execute:

DUPLICATE TARGET DATABASE
FOR STANDBY
FROM ACTIVE DATABASE
DORECOVER
NOFILENAMECHECK;

This command:

• Copies datafiles
• Creates controlfile
• Synchronizes archive logs


6. Start Managed Recovery

After duplication completes:

ALTER DATABASE RECOVER MANAGED STANDBY DATABASE
USING CURRENT LOGFILE
DISCONNECT FROM SESSION;

This enables Real-Time Apply.


7. Verify Data Guard Configuration

Check synchronization.

On Standby

SELECT open_mode, database_role FROM v$database;

Expected:

PHYSICAL STANDBY

Check Log Apply

SELECT sequence#, applied 
FROM v$archived_log
ORDER BY sequence#;

Check Data Guard Status

SELECT process,status FROM v$managed_standby;

Expected processes:

MRP0 – Managed Recovery
RFS – Redo Fetch Server


8. Open Standby for Read Only (Optional)

ALTER DATABASE OPEN READ ONLY;

Then start apply again:

ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE DISCONNECT;

This is Active Data Guard.


Quick Architecture Summary

Primary DB
↓ Redo Transport
Standby DB

Redo shipped via ARCn / LGWRRFSMRP applies redo.

Oracle DBA

Experienced OCM-certified Oracle Database Administrator with over 18 years of expertise in designing, implementing, and managing complex database solutions. My expertise spans performance optimization, security, and high-stakes solution implementation. Adept at managing complex environments with precision.

No Comments

    Leave a Message

    Your email address will not be published. All fields are mandatory. **