Step By Step Guide to to create Physical Standby Using RMAN Duplicate (backup based approach)

In this post I have demonstrated  Step By Step method to create ASM physical standby DB  from ASM primary DB  Using RMAN Duplicate (backup based approach)

Environment Details
OS Version : AIX 6.1
Oracle Version  : 11.2.0.3 PSU 8
Storage  System : ASM
Grid  Home : /prasprd/gridinfra/grid1
RDBMS Home :/prasprd/db/db1
Primary DB : PRASPRD Host: LABPRIM
Standby DB : PRASSBY  Host : LABSBY
Pre-Requisite
  • Database (PRIMARY) is up and running and the data files, control files, redo log files, archive files residing in ASM.
  • ASM instance and disk groups configured in STANDBY server.
  • Network connectivity between PRIMARY and STANDBY server.

 

PROCEDURE
  • Enable force logging in PRIMARY.
  • Create SRL (standby redo logs) in PRIMARY.
  • Backup the PRIMARY database.
  • Make proper changes in the parameter file of PRIMARY.
  • Create the parameter file for STANDBY .
  • Copy the files (RMAN Backup, init.ora) to STANDBY.
  • Establish the connectivity between PRIMARY and STANDBY.
  • Start the STANDBY instance and use RMAN duplicate to create standby database.
  • Create SRL on standby.
  • Start the MRP process,
  • Verify whether the log are shipped and applied properly @the standby .
Step by Step to create new physical standby

1. Enable Forced Logging on PRIMARY

SQL> ALTER DATABASE FORCE LOGGING;

2. Configure Standby Redo Log on PRIMARY

 a. Check the log files and sizes,

 SQL>SELECT GROUP#, BYTES FROM V$LOG;

 b. Create SRL

 ALTER DATABASE ADD STANDBY LOGFILE GROUP 4  (‘/path/<File Name>’,  ‘/path/<File Name>’   )  SIZE 100M  …. ;

 NOTE: SIZE OF STANDBY LOGFILE SHOULD BE SAME AS ONLINE LOGFILE

 c. Verify the standby redo log file groups were created (do this after the creation of standby database)

SQL> SELECT GROUP#, THREAD#, SEQUENCE#, ARCHIVED, STATUS FROM V$STANDBY_LOG;

3. Use RMAN to backup PRIMARY database with archivelog & controlfile.

 RMAN>backup database format ‘/tmp/dbbkp/PRASPRD_%U’;

RMAN>backup archivelog all format ‘/tmp/dbbkp/PRASPRD_ARC_%U’;

RMAN> backup current controlfile for standby format ‘/tmp/dbbkp/PRASPRD_CONTROL.bkp’;

 4. Make the necessary changes to PRIMARY.

 DB_NAME=PRIMA

DB_UNIQUE_NAME=PRIMA

LOG_ARCHIVE_CONFIG=’DG_CONFIG=(PRASPRD,PRASSBY)’

LOG_ARCHIVE_DEST_2= ‘SERVICE=stdby LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=PRASSBY’

LOG_ARCHIVE_DEST_STATE_2=DEFER

REMOTE_LOGIN_PASSWORDFILE=EXCLUSIVE

LOG_ARCHIVE_FORMAT=log%t_%s_%r.arc

LOG_ARCHIVE_MAX_PROCESSES=30

FAL_SERVER=PRASSBY

FAL_CLIENT=PRASPRD

DB_FILE_NAME_CONVERT=’ PRASSBY ‘,’PRASPRD’ (ASMDISKGROUP NAME)

LOG_FILE_NAME_CONVERT=’PRASSBY’,’PRASPRD’ (ASMDISKGROUP NAME)

STANDBY_FILE_MANAGEMENT=AUTO

 5. Create the parameter file for standby

 a. CREATE PFILE='<specify any location>’ from spfile; (@primary,)

b. Make the necessary changes.

 DB_NAME=PRIMA

DB_UNIQUE_NAME=PRASSBY

LOG_ARCHIVE_CONFIG=’DG_CONFIG=(PRASPRD,PRASSBY)’

CONTROL_FILES=’+DATA’,’+FRA’

DB_FILE_NAME_CONVERT=’PRASPRD’,’PRASSBY’  (ASMDISKGROUP NAME)

LOG_FILE_NAME_CONVERT=’PRASPRD’,’PRASSBY’ (ASMDISKGROUP NAME)

LOG_ARCHIVE_FORMAT=log%t_%s_%r.arc

LOG_ARCHIVE_DEST_2= ‘SERVICE=PRIMA LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=PRASPRD’

LOG_ARCHIVE_DEST_STATE_1=ENABLE

LOG_ARCHIVE_DEST_STATE_2=ENABLE

REMOTE_LOGIN_PASSWORDFILE=EXCLUSIVE

STANDBY_FILE_MANAGEMENT=AUTO

FAL_SERVER=PRASPRD

FAL_CLIENT=PRASSBY

 6. Copy the files (RMAN Backup, init.ora) to STANDBY

 a) Copy the RMAN backup files created in /tmp/dbbkp (step3) to STANDBY in identical location

b) Copy the init.ora (step 5) to STANDBY

c) Recreate the password file in standby using orapwd utility

 7. Establish the connectivity between primary and standby.

 In PRIMARY (TNSNAMES.ORA)

 PRASSBY=

(DESCRIPTION =

(ADDRESS = (PROTOCOL = TCP)(HOST = 10.10.10.1)(PORT = 1521))

(CONNECT_DATA =

(SERVER = DEDICATED)

(SERVICE_NAME = PRASSBY.pras.com)

)

)

In STANDBY (TNSNAMES.ORA)

PRASPRD=

(DESCRIPTION =

(ADDRESS = (PROTOCOL = TCP)(HOST = 10.10.10.2)(PORT = 1521))

(CONNECT_DATA =

(SERVER = DEDICATED)

(SERVICE_NAME = PRASPRD.pras.com)

)

)

 NOTE: Use TNSPING <servicename> to check the connectivity between PRIMARY and STANDBY

 8. Start the STANDBY instance and use RMAN duplicate to create standby database

 NOTE: Make sure the ASM instance also running.

$export ORACLE_SID=PRASSBY

SQL>create spfile from pfile=’<specify the newly created parameter location>’

SQL>startup nomount

 NOTE: Connect to catalog if your primary database has catalog database.

 $RMAN target sys/<passwd>@primary catalog RMAN/RMAN@RMAN auxiliary sys/<passwd

RMAN> RUN {

allocate auxiliary channel C1 device type disk;

duplicate target database for standby; }

9. Create SRL(Standby Redo logs) on standby,

 ALTER DATABASE ADD STANDBY LOGFILE GROUP 4  (‘/path/<File Name>’,  ‘/path/<File Name>’   )  SIZE 100M  …. ;

 NOTE: SIZE OF STANDBY LOGFILE SHOULD BE SAME AS ONLINE LOGFILE

 10. Start the MRP process in PRIMARY

 In PRIMARY

 SQL>ALTER SYSTEM SET LOG_ARCHIVE_DEST_STATE_2=ENABLE;

 In STANDBY

SQL>ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT FROM SESSION;

11. Verify whether the log are shipped and applied properly in the standby

 a. execute on PRIMARY database

 SQL> ALTER SYSTEM SWITCH LOGFILE;

 b. execute on STANDBY database

 SQL> SELECT SEQUENCE#, FIRST_TIME, NEXT_TIME FROM V$ARCHIVED_LOG ORDER BY SEQUENCE#;

 c. Issue more log switches at PRIMARY

 SQL> ALTER SYSTEM SWITCH LOGFILE;

 d. Verify the new redo data was archived on the standby database.On the standby database, query the V$ARCHIVED_LOG view to verify the redo data was received and archived on the standby database:

 SQL> SELECT SEQUENCE#, FIRST_TIME, NEXT_TIME  FROM V$ARCHIVED_LOG ORDER BY SEQUENCE#;

 NOTE: Verify new archived redo log files were applied. At the standby database, query the V$ARCHIVED_LOG view to verify the archived redo log files were applied.

 SQL> SELECT SEQUENCE#,APPLIED FROM V$ARCHIVED_LOG ORDER BY SEQUENCE#;