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#;

Relocating Grid Infrastructure Home(Single Instance)

In this post I have demonstrated step by step method to relocate 11gr2 Grid infrastructure (gi) home to another location. Below steps had performed on Single instance Grid Infra.

Please note:  I strongly recommend you to test this steps and validate.  I am not sure this is a supported action. However   I followed below steps which worked fine for me. I have implemented this in couple of environments

Environment Details
OS Version : AIX 6.1
Oracle Version  : 11.2.0.2 PSU 2
Storage  System : ASM
Old Grid  Home : /prasprd/gridinfra/grid1
New Grid Home :/prasprd/gridinfr/grid2

 

Step1

Verify Current location of GI

cat /etc/oratab

ASM:/prsprd/gridinfra/grid1:N

PPRD:/prsprd/oradb/db1:N

Step2

Stop all has stack (as root)

          /prasprd/gridinfra/grid1/bin/crsctl stop has          

Step3

Copy GI files to new destination 

cp  -R  /prasprd/gridinfra/grid1/*    /prasprd/gridinfra/grid2/

Step4

  Edit the file crsconfig_params, with new gi home path:

vi  /prasprd/gridinfra/grid2/crs/install/crsconfig_params

From    ORACLE_HOME=/prasprd/gridinfra/grid1   To    ORACLE_HOME=/prasprd/gridinfra/grid2

Step5

Edit OLR.loc file with new home

vi /etc/oracle/olr.loc

From olrconfig_loc=/prasprd/gridinfra/grid1/cdata/<servername>.olr To olrconfig_loc=/prasprd/gridinfra/grid2/cdata/<servername>.olr

From  crs_home=/prasprd/gridinfra/grid1  To     crs_home=/prasprd/gridinfra/grid2

Step 6

Take backup of crsconfig_lib.pm

cd /prasprd/gridinfra/grid2/crs/install/

cp crsconfig_lib.pm crsconfig_lib.pm.bak

Step 7

Edit following line from crsconfig_lib.pm

From     my @exp_func = qw(check_CRSConfig validate_olrconfig validateOCR

To          my @exp_func = qw(check_CRSConfig validate_olrconfig validateOCR read_file

Step 8

Now lock and relink the GI HOME as root user….

/prasprd/gridinfra/grid2/rdbms/install/rootadd_rdbms.sh

/prasprd/gridinfra/grid2/crs/install/roothas.pl –patch

Step 9

Check the CRS resources status

/prasprd/gridinfra/grid2/bin/crsctl stat res –t

Step 10

Verify Current location of GI

cat /etc/oratab

# +ASM:/prsprd/gridinfra/grid1:N

+ASM:/prsprd/gridinfra/grid2:N

PPRD:/prsprd/oradb/db1:N