Prerequisite

Primary side

2 node RAC primary TROY(TROY1,TROY2) already setup and running on oel6-112-rac1, oel6-112-rac1

for setting up 2 node RAC on primary follow this post

https://dbatracker.com/2020/05/15/11-2-0-3-rac-install-on-oel-6/

Standby side

Grid and DB software installed on oel6-112-dr-rac1, oel6-112-dr-rac2

/etc/hosts on all 4 nodes (2 primary and 2 standby)

127.0.0.1       localhost.localdomain   localhost
# Public
192.168.43.101  ol6-112-rac1.localdomain        ol6-112-rac1
192.168.43.102  ol6-112-rac2.localdomain        ol6-112-rac2
# Private
192.168.190.201   ol6-112-rac1-priv.localdomain   ol6-112-rac1-priv
192.168.190.202   ol6-112-rac2-priv.localdomain   ol6-112-rac2-priv
# Virtual
192.168.43.103   ol6-112-rac1-vip.localdomain    ol6-112-rac1-vip
192.168.43.104  ol6-112-rac2-vip.localdomain    ol6-112-rac2-vip
# SCAN
192.168.43.105   ol6-112-scan.localdomain ol6-112-scan
192.168.43.106   ol6-112-scan.localdomain ol6-112-scan
192.168.43.107   ol6-112-scan.localdomain ol6-112-scan


#for duplicate testing
192.168.189.102 oel6-node02.localdomain oel6-node02


#DR details

# Public
192.168.43.131  ol6-112-dr-rac1.localdomain        ol6-112-dr-rac1
192.168.43.132  ol6-112-dr-rac2.localdomain        ol6-112-dr-rac2
# Private
192.168.190.211   ol6-112-dr-rac1-priv.localdomain   ol6-112-dr-rac1-priv
192.168.190.212   ol6-112-dr-rac2-priv.localdomain   ol6-112-dr-rac2-priv
# Virtual
192.168.43.133   ol6-112-dr-rac1-vip.localdomain    ol6-112-dr-rac1-vip
192.168.43.134  ol6-112-dr-rac2-vip.localdomain    ol6-112-dr-rac2-vip
# SCAN
192.168.43.135   ol6-112-dr-scan.localdomain ol6-112-dr-scan
192.168.43.136   ol6-112-dr-scan.localdomain ol6-112-dr-scan
192.168.43.137   ol6-112-dr-scan.localdomain ol6-112-dr-scan

tnsnames.ora file in Database oracle home on all 4 nodes (/u01/app/oracle/product/11.2.0.3/db_1/network/admin/tnsnames.ora)

## Prod tns entry with scan
TROY =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = ol6-112-scan)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = TROY.localdomain)
    )
  )



## DR tns entry with scan

TROY_DR =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = ol6-112-dr-scan)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = TROY_DR.localdomain)
    )
  )


## To transfer of archives from prod to standby - used in prod log_archive_dest_2


TROY1_DR_VIP =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = ol6-112-dr-rac1-vip)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = TROY_DR.localdomain)
    )
  )



##To transfer archives from standby to prod - used in standby log_archive_dest_2


TROY1_VIP =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = ol6-112-rac1-vip)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = TROY.localdomain)
    )
  )

##these are in case PROD node 1 or DR node 1 is down we will use them to transfer archivelogs 
##from standby to PROD


TROY2_VIP =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = ol6-112-rac2-vip)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = TROY.localdomain)
    )
  )




## from prod to standby


TROY2_DR_VIP =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = ol6-112-dr-rac2-vip)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = TROY_DR.localdomain)
    )
  )



## this one is for listener static entry which will be used for active database duplicate it port is 1525

TROY_DUP =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = ol6-112-dr-rac1)(PORT = 1525))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = TROY_DUP)
    )
  )

Static listener on standby node 1 for duplicate purpose. It is using port 1525

[oracle@ol6-112-dr-rac1 admin]$ pwd
/u01/app/oracle/product/11.2.0.3/db_1/network/admin
[oracle@ol6-112-dr-rac1 admin]$ cat listener.ora
#####this is static entry for duplicate
SID_LIST_LISTENER1 =
 (SID_LIST =
  (SID_DESC =
   (GLOBAL_DBNAME = TROY_DUP)
   (ORACLE_HOME = /u01/app/oracle/product/11.2.0.3/db_1)
   (SID_NAME = TROY1)
  )
 )

LISTENER1 =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = ol6-112-dr-rac1.localdomain)(PORT = 1525))
    )
  )

ADR_BASE_LISTENER1 = /u01/app/oracle

Env files to set env – this is useful as you have to set env lot of times

ol6-112-rac1

[oracle@ol6-112-rac1 ~]$ cat db_env
ORACLE_SID=TROY1; export ORACLE_SID
ORACLE_HOME=$DB_HOME; export ORACLE_HOME
PATH=$ORACLE_HOME/bin:$BASE_PATH; export PATH
LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib; export LD_LIBRARY_PATH
CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib; export CLASSPATH


[oracle@ol6-112-rac1 ~]$ cat grid_env
ORACLE_SID=+ASM1; export ORACLE_SID
ORACLE_HOME=$GRID_HOME; export ORACLE_HOME
PATH=$ORACLE_HOME/bin:$BASE_PATH; export PATH
LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib; export LD_LIBRARY_PATH
CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib; export CLASSPATH

ol6-112-rac2

[oracle@ol6-112-rac2 ~]$ cat db_env
ORACLE_SID=TROY2; export ORACLE_SID
ORACLE_HOME=$DB_HOME; export ORACLE_HOME
PATH=$ORACLE_HOME/bin:$BASE_PATH; export PATH
LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib; export LD_LIBRARY_PATH
CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib; export CLASSPATH


[oracle@ol6-112-rac2 ~]$ cat grid_env
ORACLE_SID=+ASM2; export ORACLE_SID
ORACLE_HOME=$GRID_HOME; export ORACLE_HOME
PATH=$ORACLE_HOME/bin:$BASE_PATH; export PATH
LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib; export LD_LIBRARY_PATH
CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib; export CLASSPATH

ol6-112-dr-rac1

[oracle@ol6-112-dr-rac1 ~]$ cat db_env
ORACLE_SID=TROY1; export ORACLE_SID
ORACLE_HOME=$DB_HOME; export ORACLE_HOME
PATH=$ORACLE_HOME/bin:$BASE_PATH; export PATH
LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib; export LD_LIBRARY_PATH
CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib; export CLASSPATH

[oracle@ol6-112-dr-rac1 ~]$ cat grid_env
ORACLE_SID=+ASM1; export ORACLE_SID
ORACLE_HOME=$GRID_HOME; export ORACLE_HOME
PATH=$ORACLE_HOME/bin:$BASE_PATH; export PATH
LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib; export LD_LIBRARY_PATH
CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib; export CLASSPATH

ol6-112-dr-rac2

[oracle@ol6-112-dr-rac2 ~]$ cat db_env
cORACLE_SID=TROY2; export ORACLE_SID
ORACLE_HOME=$DB_HOME; export ORACLE_HOME
PATH=$ORACLE_HOME/bin:$BASE_PATH; export PATH
LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib; export LD_LIBRARY_PATH
CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib; export CLASSPATH

[oracle@ol6-112-dr-rac2 ~]$ cat grid_env
ORACLE_SID=+ASM2; export ORACLE_SID
ORACLE_HOME=$GRID_HOME; export ORACLE_HOME
PATH=$ORACLE_HOME/bin:$BASE_PATH; export PATH
LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib; export LD_LIBRARY_PATH
CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib; export CLASSPATH

Bash profile on ol6-112-rac1 and ol6-112-rac2

[oracle@ol6-112-rac1 ~]$ cat .bash_profile
# .bash_profile

# Get the aliases and functions
if [ -f ~/.bashrc ]; then
        . ~/.bashrc
fi

# User specific environment and startup programs

PATH=$PATH:$HOME/bin

export PATH
# Oracle Settings
# Oracle Settings
TMP=/tmp; export TMP
TMPDIR=$TMP; export TMPDIR

ORACLE_HOSTNAME=ol6-112-rac1.localdomain; export ORACLE_HOSTNAME
ORACLE_UNQNAME=TROY; export ORACLE_UNQNAME
ORACLE_BASE=/u01/app/oracle; export ORACLE_BASE
GRID_HOME=/u01/app/11.2.0.3/grid; export GRID_HOME
DB_HOME=$ORACLE_BASE/product/11.2.0.3/db_1; export DB_HOME
ORACLE_HOME=$DB_HOME; export ORACLE_HOME
ORACLE_SID=TROY1; export ORACLE_SID
ORACLE_TERM=xterm; export ORACLE_TERM
BASE_PATH=/usr/sbin:$PATH; export BASE_PATH
PATH=$ORACLE_HOME/bin:$BASE_PATH; export PATH

LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib; export LD_LIBRARY_PATH
CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib; export CLASSPATH

alias grid_env='. /home/oracle/grid_env'
alias db_env='. /home/oracle/db_env'
[oracle@ol6-112-rac2 ~]$ cat .bash_profile
# .bash_profile

# Get the aliases and functions
if [ -f ~/.bashrc ]; then
        . ~/.bashrc
fi

# User specific environment and startup programs

PATH=$PATH:$HOME/bin

export PATH
# Oracle Settings
# Oracle Settings
TMP=/tmp; export TMP
TMPDIR=$TMP; export TMPDIR

ORACLE_HOSTNAME=ol6-112-rac2.localdomain; export ORACLE_HOSTNAME
ORACLE_UNQNAME=TROY; export ORACLE_UNQNAME
ORACLE_BASE=/u01/app/oracle; export ORACLE_BASE
GRID_HOME=/u01/app/11.2.0.3/grid; export GRID_HOME
DB_HOME=$ORACLE_BASE/product/11.2.0.3/db_1; export DB_HOME
ORACLE_HOME=$DB_HOME; export ORACLE_HOME
ORACLE_SID=TROY2; export ORACLE_SID
ORACLE_TERM=xterm; export ORACLE_TERM
BASE_PATH=/usr/sbin:$PATH; export BASE_PATH
PATH=$ORACLE_HOME/bin:$BASE_PATH; export PATH

LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib; export LD_LIBRARY_PATH
CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib; export CLASSPATH

alias grid_env='. /home/oracle/grid_env'
alias db_env='. /home/oracle/db_env'

Bash profile on ol6-112-dr-rac1 and ol6-112-dr-rac2

[oracle@ol6-112-dr-rac1 ~]$ cat .bash_profile
# .bash_profile

# Get the aliases and functions
if [ -f ~/.bashrc ]; then
        . ~/.bashrc
fi

# User specific environment and startup programs

PATH=$PATH:$HOME/bin

export PATH
# Oracle Settings
# Oracle Settings
TMP=/tmp; export TMP
TMPDIR=$TMP; export TMPDIR

ORACLE_HOSTNAME=ol6-112-dr-rac1.localdomain; export ORACLE_HOSTNAME
ORACLE_UNQNAME=TROY_DR; export ORACLE_UNQNAME
ORACLE_BASE=/u01/app/oracle; export ORACLE_BASE
GRID_HOME=/u01/app/11.2.0.3/grid1; export GRID_HOME
DB_HOME=$ORACLE_BASE/product/11.2.0.3/db_1; export DB_HOME
ORACLE_HOME=$DB_HOME; export ORACLE_HOME
ORACLE_SID=TROY1; export ORACLE_SID
ORACLE_TERM=xterm; export ORACLE_TERM
BASE_PATH=/usr/sbin:$PATH; export BASE_PATH
PATH=$ORACLE_HOME/bin:$BASE_PATH; export PATH

LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib; export LD_LIBRARY_PATH
CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib; export CLASSPATH

alias grid_env='. /home/oracle/grid_env'
alias db_env='. /home/oracle/db_env'
[oracle@ol6-112-dr-rac2 ~]$ cat .bash_profile
# .bash_profile

# Get the aliases and functions
if [ -f ~/.bashrc ]; then
        . ~/.bashrc
fi

# User specific environment and startup programs

PATH=$PATH:$HOME/bin

export PATH
# Oracle Settings
# Oracle Settings
TMP=/tmp; export TMP
TMPDIR=$TMP; export TMPDIR

ORACLE_HOSTNAME=ol6-112-dr-rac2.localdomain; export ORACLE_HOSTNAME
ORACLE_UNQNAME=TROY_DR; export ORACLE_UNQNAME
ORACLE_BASE=/u01/app/oracle; export ORACLE_BASE
GRID_HOME=/u01/app/11.2.0.3/grid1; export GRID_HOME
DB_HOME=$ORACLE_BASE/product/11.2.0.3/db_1; export DB_HOME
ORACLE_HOME=$DB_HOME; export ORACLE_HOME
ORACLE_SID=TROY2; export ORACLE_SID
ORACLE_TERM=xterm; export ORACLE_TERM
BASE_PATH=/usr/sbin:$PATH; export BASE_PATH
PATH=$ORACLE_HOME/bin:$BASE_PATH; export PATH

LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib; export LD_LIBRARY_PATH
CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib; export CLASSPATH

alias grid_env='. /home/oracle/grid_env'
alias db_env='. /home/oracle/db_env'

Prepare Primary RAC database for DR configuration

Enable force logging and ensure database is in archivelog mode

TROY1@ol6-112-rac1 > SELECT force_logging  FROM v$database;

FOR
---
NO

TROY1@ol6-112-rac1 > ALTER DATABASE FORCE LOGGING;

Database altered.

TROY1@ol6-112-rac1 > SELECT force_logging  FROM v$database;

FOR
---
YES


TROY1@ol6-112-rac1 > archive log list
Database log mode              Archive Mode
Automatic archival             Enabled
Archive destination            USE_DB_RECOVERY_FILE_DEST
Oldest online log sequence     24
Next log sequence to archive   25
Current log sequence           25

set unique name , log_archive_config, dest_2, fal client, fal server and few other parameters

TROY1@ol6-112-rac1 > SHOW PARAMETER DB_UNIQUE_NAME

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
db_unique_name                       string      TROY

TROY1@ol6-112-rac1 > ALTER SYSTEM SET LOG_ARCHIVE_CONFIG='DG_CONFIG=(TROY,TROY_DR)' sid='*';

System altered.

TROY1@ol6-112-rac1 > ALTER SYSTEM SET LOG_ARCHIVE_DEST_2='SERVICE=TROY1_DR_VIP NOAFFIRM ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=TROY_DR' sid='*';

System altered.

TROY1@ol6-112-rac1 > ALTER SYSTEM SET LOG_ARCHIVE_DEST_STATE_2=ENABLE sid='*';

System altered.

TROY1@ol6-112-rac1 > sho parameter LOG_ARCHIVE_FORMAT

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
log_archive_format                   string      %t_%s_%r.dbf
TROY1@ol6-112-rac1 > ALTER SYSTEM SET LOG_ARCHIVE_FORMAT='TROY_%t_%s_%r.arc' SCOPE=SPFILE;

System altered.

TROY1@ol6-112-rac1 > ALTER SYSTEM SET LOG_ARCHIVE_MAX_PROCESSES=30 sid='*';

System altered.

TROY1@ol6-112-rac1 > ALTER SYSTEM SET REMOTE_LOGIN_PASSWORDFILE=EXCLUSIVE SCOPE=SPFILE;

System altered.

TROY1@ol6-112-rac1 > ALTER SYSTEM SET FAL_SERVER='TROY_DR' sid='*';

System altered.

TROY1@ol6-112-rac1 > ALTER SYSTEM SET FAL_CLIENT='TROY' sid='*';

System altered.

TROY1@ol6-112-rac1 > ALTER SYSTEM SET STANDBY_FILE_MANAGEMENT=AUTO SCOPE=BOTH SID='*';

System altered.

Add the standby redolog files in primary:

TROY1@ol6-112-rac1 > select GROUP#,THREAD#, bytes/1024/1024 MB from gv$log order by GROUP#,THREAD#;

GROUP#    THREAD#         MB
------ ---------- ----------
     1          1         50
     1          1         50
     2          1         50
     2          1         50
     3          2         50
     3          2         50
     4          2         50
     4          2         50

8 rows selected.

TROY1@ol6-112-rac1 > alter database add standby logfile thread 1 group 5 '+DATA' size 50M;

Database altered.

TROY1@ol6-112-rac1 > alter database add standby logfile thread 1 group 6 '+DATA' size 50M;

Database altered.

TROY1@ol6-112-rac1 > alter database add standby logfile thread 1 group 7 '+DATA' size 50M;

Database altered.

TROY1@ol6-112-rac1 > alter database add standby logfile thread 2 group 8 '+DATA' size 50M;

Database altered.

TROY1@ol6-112-rac1 > alter database add standby logfile thread 2 group 9 '+DATA' size 50M;

Database altered.

TROY1@ol6-112-rac1 > alter database add standby logfile thread 2 group 10 '+DATA' size 50M;

Database altered.

verify

TROY1@ol6-112-rac1 > select group#,thread#,sequence#,archived,status from gV$STANDBY_LOG order by group#,thread#;

GROUP#    THREAD#  SEQUENCE# ARCHIVE STATUS
------ ---------- ---------- ------- ----------
     5          1          0 YES     UNASSIGNED
     5          1          0 YES     UNASSIGNED
     6          1          0 YES     UNASSIGNED
     6          1          0 YES     UNASSIGNED
     7          1          0 YES     UNASSIGNED
     7          1          0 YES     UNASSIGNED
     8          2          0 YES     UNASSIGNED
     8          2          0 YES     UNASSIGNED
     9          2          0 YES     UNASSIGNED
     9          2          0 YES     UNASSIGNED
    10          2          0 YES     UNASSIGNED
    10          2          0 YES     UNASSIGNED

12 rows selected.

Now, verify all the required values have the appropriate values.

TROY1@ol6-112-rac1 > set lines 999 pages 999
col value for a110
col name for a50
select name, value
from v$parameter
where name in ('db_name','db_unique_name','log_archive_config', 'log_archive_dest_1','log_archive_dest_2',
'log_archive_dest_state_1','log_archiveTROY1@ol6-112-rac1 > TROY1@ol6-112-rac1 > TROY1@ol6-112-rac1 >   2    3    4  _dest_state_2', 'remote_login_passwordfile',
'log_archive_format','log_archive_max_processes','fal_server','fal_client','standby_file_management','db_recovery_file_dest','db_recovery_file_dest_size');  5

NAME                                               VALUE
-------------------------------------------------- --------------------------------------------------------------------------------------------------------------
log_archive_dest_1
log_archive_dest_2                                 SERVICE=TROY1_DR_VIP NOAFFIRM ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=TROY_DR
log_archive_dest_state_1                           enable
log_archive_dest_state_2                           ENABLE
fal_client                                         TROY
fal_server                                         TROY_DR
log_archive_config                                 DG_CONFIG=(TROY,TROY_DR)
log_archive_format                                 TROY_%t_%s_%r.arc
log_archive_max_processes                          30
db_recovery_file_dest                              +DATA
db_recovery_file_dest_size                         5368709120
standby_file_management                            AUTO
remote_login_passwordfile                          EXCLUSIVE
db_name                                            TROY
db_unique_name                                     TROY

15 rows selected.

Create pfile and password in primary and copy to standby servers. Prod and standby node1 file will have same name and similarly prod and standby node2 files will have same name

TROY1@ol6-112-rac1 > create pfile='/tmp/initTROY1.ora' from spfile;

File created.


[oracle@ol6-112-rac1 dbs]$ orapwd file=$ORACLE_HOME/dbs/orapw$ORACLE_SID password=oracle entries=10 force=y
[oracle@ol6-112-rac1 dbs]$ scp orapwTROY1 ol6-112-dr-rac1:/u01/app/oracle/product/11.2.0.3/db_1/dbs
[oracle@ol6-112-rac1 dbs]$ scp orapwTROY1 ol6-112-rac2:/u01/app/oracle/product/11.2.0.3/db_1/dbs/orapwTROY2
[oracle@ol6-112-rac1 dbs]$ scp orapwTROY1 ol6-112-dr-rac2:/u01/app/oracle/product/11.2.0.3/db_1/dbs/orapwTROY2

Copy the pfile created above to standby node1

[oracle@ol6-112-rac1 dbs]$ scp /tmp/initTROY1.ora ol6-112-dr-rac1:/u01/app/oracle/product/11.2.0.3/db_1/dbs/

Create static listener in Oracle database home temporarily in the Standby Node1 and start it for active duplicate dataguard setup

[oracle@ol6-112-dr-rac1 admin]$ pwd
/u01/app/oracle/product/11.2.0.3/db_1/network/admin
[oracle@ol6-112-dr-rac1 admin]$ cat listener.ora
#####this is static entry for duplicate
SID_LIST_LISTENER1 =
 (SID_LIST =
  (SID_DESC =
   (GLOBAL_DBNAME = TROY_DUP)
   (ORACLE_HOME = /u01/app/oracle/product/11.2.0.3/db_1)
   (SID_NAME = TROY1)
  )
 )

LISTENER1 =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = ol6-112-dr-rac1.localdomain)(PORT = 1525))
    )
  )

ADR_BASE_LISTENER1 = /u01/app/oracle
[oracle@ol6-112-dr-rac1 admin]$

start the listener1. TROY_DUP is not registered but in unknown state which is fine as database is not yet started. this will be used for auxiliary connection while duplicating the database

[oracle@ol6-112-dr-rac1 admin]$ lsnrctl start LISTENER1

LSNRCTL for Linux: Version 11.2.0.3.0 - Production on 27-MAY-2020 19:52:18

Copyright (c) 1991, 2011, Oracle.  All rights reserved.

Starting /u01/app/oracle/product/11.2.0.3/db_1/bin/tnslsnr: please wait...

TNSLSNR for Linux: Version 11.2.0.3.0 - Production
System parameter file is /u01/app/oracle/product/11.2.0.3/db_1/network/admin/listener.ora
Log messages written to /u01/app/oracle/diag/tnslsnr/ol6-112-dr-rac1/listener1/alert/log.xml
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=ol6-112-dr-rac1.localdomain)(PORT=1525)))

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=ol6-112-dr-rac1.localdomain)(PORT=1525)))
STATUS of the LISTENER
------------------------
Alias                     LISTENER1
Version                   TNSLSNR for Linux: Version 11.2.0.3.0 - Production
Start Date                27-MAY-2020 19:52:19
Uptime                    0 days 0 hr. 0 min. 0 sec
Trace Level               off
Security                  ON: Local OS Authentication
SNMP                      OFF
Listener Parameter File   /u01/app/oracle/product/11.2.0.3/db_1/network/admin/listener.ora
Listener Log File         /u01/app/oracle/diag/tnslsnr/ol6-112-dr-rac1/listener1/alert/log.xml
Listening Endpoints Summary...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=ol6-112-dr-rac1.localdomain)(PORT=1525)))
Services Summary...
Service "TROY_DUP" has 1 instance(s).===>
  Instance "TROY1", status UNKNOWN, has 1 handler(s) for this service...
The command completed successfully

Prepare Standby Site

make these directories on standby both nodes

[oracle@ol6-112-dr-rac1 TROY]$ pwd
/u01/app/oracle/admin/TROY
[oracle@ol6-112-dr-rac1 TROY]$ ls
adump  

[oracle@ol6-112-dr-rac2 TROY]$ pwd
/u01/app/oracle/admin/TROY
[oracle@ol6-112-dr-rac2 TROY]$ ls
adump  

[oracle@ol6-112-dr-rac1 diag]$ mkdir -p /u01/app/oracle/diag/rdbms/troy/TROY1
[oracle@ol6-112-dr-rac1 diag]$ cd /u01/app/oracle/diag/rdbms/troy/TROY1
[oracle@ol6-112-dr-rac1 TROY1]$ ls
[oracle@ol6-112-dr-rac1 TROY1]$ mkdir trace cdump
[oracle@ol6-112-dr-rac1 TROY1]$



[oracle@ol6-112-dr-rac2 diag]$ mkdir -p /u01/app/oracle/diag/rdbms/troy/TROY2
[oracle@ol6-112-dr-rac2 diag]$ cd /u01/app/oracle/diag/rdbms/troy/TROY2/
[oracle@ol6-112-dr-rac2 TROY2]$ mkdir trace cdump
[oracle@ol6-112-dr-rac2 TROY2]$ ls
cdump  trace

edit and make below changes in standby pfile which was copied from primary node 1 in above step

[oracle@ol6-112-dr-rac1 dbs]$ cat initTROY1.ora
*.audit_file_dest='/u01/app/oracle/admin/TROY/adump'
*.audit_trail='db'
*.compatible='11.2.0.0.0'
*.control_files='+DATA'
*.db_block_size=8192
*.db_create_file_dest='+DATA'
*.db_domain='localdomain'
*.db_name='TROY'
*.db_recovery_file_dest_size=5368709120
*.db_recovery_file_dest='+DATA'
*.diagnostic_dest='/u01/app/oracle'
*.dispatchers='(PROTOCOL=TCP) (SERVICE=TROYXDB)'
*.fal_client='TROY_DR'
*.fal_server='TROY'
*.log_archive_config='DG_CONFIG=(TROY,TROY_DR)'
*.log_archive_dest_2='SERVICE=TROY1_VIP NOAFFIRM ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=TROY'
*.log_archive_dest_state_2='ENABLE'
*.log_archive_format='TROY_%t_%s_%r.arc'
*.log_archive_max_processes=30
*.open_cursors=300
*.processes=150
*.remote_listener='ol6-112-dr-scan:1521'
*.remote_login_passwordfile='EXCLUSIVE'
*.standby_file_management='AUTO'
*.undo_tablespace='UNDOTBS1'
*.sga_max_size=629145600
*.sga_target=629145600
*.db_unique_name='TROY_DR'

Create the Physical Standby Database

On standby node 1 start standby database in nomount state using the pfile created above

[oracle@ol6-112-dr-rac1 dbs]$ sqlplus / as sysdba

SQL*Plus: Release 11.2.0.3.0 Production on Wed May 27 20:28:24 2020

Copyright (c) 1982, 2011, Oracle.  All rights reserved.

Connected to an idle instance.

SQL> startup nomount pfile=/u01/app/oracle/product/11.2.0.3/db_1/dbs/initTROY1.ora
ORACLE instance started.

Total System Global Area 1252663296 bytes
Fixed Size                  2227944 bytes
Variable Size             738197784 bytes
Database Buffers          503316480 bytes
Redo Buffers                8921088 bytes
SQL> exit

Run rman duplicate

[oracle@ol6-112-dr-rac1 admin]$ rman target sys/oracle@TROY1_VIP auxiliary sys/oracle@TROY_DUP

Recovery Manager: Release 11.2.0.3.0 - Production on Wed May 27 21:42:39 2020

Copyright (c) 1982, 2011, Oracle and/or its affiliates.  All rights reserved.

connected to target database: TROY (DBID=4201044407)
connected to auxiliary database: TROY (not mounted)

[oracle@ol6-112-dr-rac1 ~]$ rman target sys/oracle@TROY1_VIP auxiliary sys/oracle@TROY_DUP

Recovery Manager: Release 11.2.0.3.0 - Production on Thu May 28 10:38:59 2020

Copyright (c) 1982, 2011, Oracle and/or its affiliates.  All rights reserved.

connected to target database: TROY (DBID=4201044407)
connected to auxiliary database: TROY (not mounted)

RMAN> DUPLICATE TARGET DATABASE FOR STANDBY FROM ACTIVE DATABASE NOFILENAMECHECK;

Starting Duplicate Db at 28-MAY-20
using target database control file instead of recovery catalog
allocated channel: ORA_AUX_DISK_1
channel ORA_AUX_DISK_1: SID=32 device type=DISK

contents of Memory Script:
{
   backup as copy reuse
   targetfile  '/u01/app/oracle/product/11.2.0.3/db_1/dbs/orapwTROY1' auxiliary format
 '/u01/app/oracle/product/11.2.0.3/db_1/dbs/orapwTROY1'   ;
}
executing Memory Script

Starting backup at 28-MAY-20
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=84 instance=TROY1 device type=DISK
Finished backup at 28-MAY-20

contents of Memory Script:
{
   backup as copy current controlfile for standby auxiliary format  '+DATA/troy/controlfile/current.256.1041590391';
   sql clone "create spfile from memory";
   shutdown clone immediate;
   startup clone nomount;
   sql clone "alter system set  control_files =
  ''+DATA/troy/controlfile/current.256.1041590391'' comment=
 ''Set by RMAN'' scope=spfile";
   shutdown clone immediate;
   startup clone nomount;
}
executing Memory Script

Starting backup at 28-MAY-20
using channel ORA_DISK_1
channel ORA_DISK_1: starting datafile copy
copying standby control file
output file name=/u01/app/oracle/product/11.2.0.3/db_1/dbs/snapcf_TROY1.f tag=TAG20200528T103954 RECID=6 STAMP=1041590401
channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:15
Finished backup at 28-MAY-20

sql statement: create spfile from memory

Oracle instance shut down

connected to auxiliary database (not started)
Oracle instance started

Total System Global Area     626327552 bytes

Fixed Size                     2230952 bytes
Variable Size                188745048 bytes
Database Buffers             432013312 bytes
Redo Buffers                   3338240 bytes

sql statement: alter system set  control_files =   ''+DATA/troy/controlfile/current.256.1041590391'' comment= ''Set by RMAN'' scope=spfile

Oracle instance shut down

connected to auxiliary database (not started)
Oracle instance started

Total System Global Area     626327552 bytes

Fixed Size                     2230952 bytes
Variable Size                188745048 bytes
Database Buffers             432013312 bytes
Redo Buffers                   3338240 bytes

contents of Memory Script:
{
   sql clone 'alter database mount standby database';
}
executing Memory Script

sql statement: alter database mount standby database

contents of Memory Script:
{
   set newname for clone tempfile  1 to new;
   switch clone tempfile all;
   set newname for clone datafile  1 to new;
   set newname for clone datafile  2 to new;
   set newname for clone datafile  3 to new;
   set newname for clone datafile  4 to new;
   set newname for clone datafile  5 to new;
   set newname for clone datafile  6 to new;
   backup as copy reuse
   datafile  1 auxiliary format new
   datafile  2 auxiliary format new
   datafile  3 auxiliary format new
   datafile  4 auxiliary format new
   datafile  5 auxiliary format new
   datafile  6 auxiliary format new
   ;
   sql 'alter system archive log current';
}
executing Memory Script

executing command: SET NEWNAME

renamed tempfile 1 to +DATA in control file

executing command: SET NEWNAME

executing command: SET NEWNAME

executing command: SET NEWNAME

executing command: SET NEWNAME

executing command: SET NEWNAME

executing command: SET NEWNAME

Starting backup at 28-MAY-20
using channel ORA_DISK_1
channel ORA_DISK_1: starting datafile copy
input datafile file number=00001 name=+DATA/troy/datafile/system.256.1040416307
output file name=+DATA/troy/datafile/system.262.1041590469 tag=TAG20200528T104106
channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:15
channel ORA_DISK_1: starting datafile copy
input datafile file number=00002 name=+DATA/troy/datafile/sysaux.257.1040416309
output file name=+DATA/troy/datafile/sysaux.261.1041590483 tag=TAG20200528T104106
channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:15
channel ORA_DISK_1: starting datafile copy
input datafile file number=00005 name=+DATA/troy/datafile/example.264.1040416383
output file name=+DATA/troy/datafile/example.260.1041590499 tag=TAG20200528T104106
channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:15
channel ORA_DISK_1: starting datafile copy
input datafile file number=00003 name=+DATA/troy/datafile/undotbs1.258.1040416309
output file name=+DATA/troy/datafile/undotbs1.259.1041590513 tag=TAG20200528T104106
channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:07
channel ORA_DISK_1: starting datafile copy
input datafile file number=00006 name=+DATA/troy/datafile/undotbs2.265.1040416497
output file name=+DATA/troy/datafile/undotbs2.258.1041590523 tag=TAG20200528T104106
channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:01
channel ORA_DISK_1: starting datafile copy
input datafile file number=00004 name=+DATA/troy/datafile/users.259.1040416309
output file name=+DATA/troy/datafile/users.257.1041590525 tag=TAG20200528T104106
channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:03
Finished backup at 28-MAY-20

sql statement: alter system archive log current

contents of Memory Script:
{
   switch clone datafile all;
}
executing Memory Script

datafile 1 switched to datafile copy
input datafile copy RECID=6 STAMP=1041590535 file name=+DATA/troy/datafile/system.262.1041590469
datafile 2 switched to datafile copy
input datafile copy RECID=7 STAMP=1041590535 file name=+DATA/troy/datafile/sysaux.261.1041590483
datafile 3 switched to datafile copy
input datafile copy RECID=8 STAMP=1041590535 file name=+DATA/troy/datafile/undotbs1.259.1041590513
datafile 4 switched to datafile copy
input datafile copy RECID=9 STAMP=1041590535 file name=+DATA/troy/datafile/users.257.1041590525
datafile 5 switched to datafile copy
input datafile copy RECID=10 STAMP=1041590535 file name=+DATA/troy/datafile/example.260.1041590499
datafile 6 switched to datafile copy
input datafile copy RECID=11 STAMP=1041590535 file name=+DATA/troy/datafile/undotbs2.258.1041590523
Finished Duplicate Db at 28-MAY-20

RMAN> exit


Recovery Manager complete.

Once duplicate completed stop the listener1 . It is no more required

[oracle@ol6-112-dr-rac1 ~]$ cd
[oracle@ol6-112-dr-rac1 ~]$ db_env
[oracle@ol6-112-dr-rac1 ~]$ lsnrctl stop LISTENER1

LSNRCTL for Linux: Version 11.2.0.3.0 - Production on 28-MAY-2020 10:43:03

Copyright (c) 1991, 2011, Oracle.  All rights reserved.

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=ol6-112-dr-rac1.localdomain)(PORT=1525)))
The command completed successfully
[oracle@ol6-112-dr-rac1 ~]$

Verify the database but it is not yet ready

[oracle@ol6-112-dr-rac1 ~]$ sqlplus

SQL*Plus: Release 11.2.0.3.0 Production on Thu May 28 10:43:39 2020

Copyright (c) 1982, 2011, Oracle.  All rights reserved.

Enter user-name: /as sysdba

Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
With the Partitioning, Real Application Clusters, Automatic Storage Management, OLAP,
Data Mining and Real Application Testing options

TROY1@ol6-112-dr-rac1 > select name,open_mode,database_role from v$database;

NAME      OPEN_MODE            DATABASE_ROLE
--------- -------------------- ----------------
TROY      MOUNTED              PHYSICAL STANDBY

create pfile from spfile and add cluster parameters – during duplicate rman creates a spfile automatically so make these changes

[oracle@ol6-112-dr-rac1 ~]$ cd $ORACLE_HOME
[oracle@ol6-112-dr-rac1 db_1]$ cd dbs
[oracle@ol6-112-dr-rac1 dbs]$ ls -ltr
total 18108
-rwxrwxr-x. 1 oracle oinstall     2851 May 15  2009 init.ora
-rwxrwxr-x. 1 oracle oinstall 18497536 May 15 20:00 snapcf_TROY1.f
-rwxrwxr-x. 1 oracle oinstall      163 May 27 14:26 initDBUA2643761.ora
-rwxrwxr-x. 1 oracle oinstall     1536 May 27 14:26 orapwDBUA2643761
-rwxrwxr-x. 1 oracle oinstall     1544 May 27 14:27 hc_DBUA2643761.dat
-rw-r--r--. 1 oracle oinstall      915 May 28 10:36 initTROY1.ora
-rw-r-----. 1 oracle oinstall     2560 May 28 10:39 orapwTROY1
-rwxrwxr-x. 1 oracle oinstall     1544 May 28 10:40 hc_TROY1.dat
-rw-r-----. 1 oracle oinstall    14848 May 28 10:40 spfileTROY1.ora
 ==>
[oracle@ol6-112-dr-rac1 dbs]$
[oracle@ol6-112-dr-rac1 dbs]$ sqlplus

SQL*Plus: Release 11.2.0.3.0 Production on Thu May 28 10:45:00 2020

Copyright (c) 1982, 2011, Oracle.  All rights reserved.

Enter user-name: /as sysdba

Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
With the Partitioning, Real Application Clusters, Automatic Storage Management, OLAP,
Data Mining and Real Application Testing options

TROY1@ol6-112-dr-rac1 > sho parameter spfile

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
spfile                               string      /u01/app/oracle/product/11.2.0
                                                 .3/db_1/dbs/spfileTROY1.ora
TROY1@ol6-112-dr-rac1 > create pfile from spfile;

File created.

[oracle@ol6-112-dr-rac1 dbs]$ ls -ltr
total 18112
-rwxrwxr-x. 1 oracle oinstall     2851 May 15  2009 init.ora
-rwxrwxr-x. 1 oracle oinstall 18497536 May 15 20:00 snapcf_TROY1.f
-rwxrwxr-x. 1 oracle oinstall      163 May 27 14:26 initDBUA2643761.ora
-rwxrwxr-x. 1 oracle oinstall     1536 May 27 14:26 orapwDBUA2643761
-rwxrwxr-x. 1 oracle oinstall     1544 May 27 14:27 hc_DBUA2643761.dat
-rw-r-----. 1 oracle oinstall     2560 May 28 10:39 orapwTROY1
-rwxrwxr-x. 1 oracle oinstall     1544 May 28 10:40 hc_TROY1.dat
-rw-r-----. 1 oracle oinstall    14848 May 28 10:40 spfileTROY1.ora
-rw-r--r--. 1 oracle oinstall     6550 May 28 10:45 initTROY1.ora ==>

Shutdown the standby

TROY1@ol6-112-dr-rac1 > shu immediate
ORA-01109: database not open


Database dismounted.
ORACLE instance shut down.
TROY1@ol6-112-dr-rac1 >

add rac parameter in pfile created above

add these parameters at the end of pfile just created above

*.cluster_database_instances=2
*.cluster_database=true
TROY1.local_listener='(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.43.133)(PORT=1521))'
TROY2.local_listener='(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.43.134)(PORT=1521))'
TROY1.instance_number=1
TROY2.instance_number=2
TROY1.instance_name='TROY1'
TROY2.instance_name='TROY2'
TROY1.thread=1
TROY2.thread=2
TROY1.undo_tablespace='UNDOTBS1'
TROY2.undo_tablespace='UNDOTBS2'

copy pfile to second dr node

[oracle@ol6-112-dr-rac1 dbs]$ pwd
/u01/app/oracle/product/11.2.0.3/db_1/dbs
[oracle@ol6-112-dr-rac1 dbs]$ scp initTROY1.ora ol6-112-dr-rac2:/u01/app/oracle/product/11.2.0.3/db_1/dbs/initTROY2.ora
initTROY1.ora                                                                                                                                              100% 6965     6.8KB/s   00:00
[oracle@ol6-112-dr-rac1 dbs]$

start instance manually in both nodes using these pfiles

[oracle@ol6-112-dr-rac1 dbs]$ cd
[oracle@ol6-112-dr-rac1 ~]$ db_env
[oracle@ol6-112-dr-rac1 ~]$ env|grep ORA
ORACLE_UNQNAME=TROY_DR
ORACLE_SID=TROY1
ORACLE_BASE=/u01/app/oracle
ORACLE_HOSTNAME=ol6-112-dr-rac1.localdomain
ORACLE_TERM=xterm
ORACLE_HOME=/u01/app/oracle/product/11.2.0.3/db_1
[oracle@ol6-112-dr-rac1 ~]$ sqlplus

SQL*Plus: Release 11.2.0.3.0 Production on Thu May 28 10:53:01 2020

Copyright (c) 1982, 2011, Oracle.  All rights reserved.

Enter user-name: /as sysdba
Connected to an idle instance.

TROY1@ol6-112-dr-rac1 > startup mount pfile='/u01/app/oracle/product/11.2.0.3/db_1/dbs/initTROY1.ora'
ORACLE instance started.

Total System Global Area  626327552 bytes
Fixed Size                  2230952 bytes
Variable Size             188745048 bytes
Database Buffers          432013312 bytes
Redo Buffers                3338240 bytes
Database mounted.
[oracle@ol6-112-dr-rac2 ~]$ cd
[oracle@ol6-112-dr-rac2 ~]$ db_env
[oracle@ol6-112-dr-rac2 ~]$ env|grep ORA
ORACLE_UNQNAME=TROY_DR
ORACLE_SID=TROY2
ORACLE_BASE=/u01/app/oracle
ORACLE_HOSTNAME=ol6-112-dr-rac2.localdomain
ORACLE_TERM=xterm
ORACLE_HOME=/u01/app/oracle/product/11.2.0.3/db_1

[oracle@ol6-112-dr-rac2 ~]$ sqlplus

SQL*Plus: Release 11.2.0.3.0 Production on Thu May 28 10:56:30 2020

Copyright (c) 1982, 2011, Oracle.  All rights reserved.

Enter user-name: /as sysdba
Connected to an idle instance.

SQL> startup mount pfile='/u01/app/oracle/product/11.2.0.3/db_1/dbs/initTROY2.ora';
ORACLE instance started.

Total System Global Area  626327552 bytes
Fixed Size                  2230952 bytes
Variable Size             251659608 bytes
Database Buffers          369098752 bytes
Redo Buffers                3338240 bytes
Database mounted.
SQL>

Register the database instances with CRS

[oracle@ol6-112-dr-rac1 dbs]$ srvctl add database -d TROY_DR -o /u01/app/oracle/product/11.2.0.3/db_1
[oracle@ol6-112-dr-rac1 dbs]$ srvctl add instance -d TROY_DR -i TROY1 -n ol6-112-dr-rac1
[oracle@ol6-112-dr-rac1 dbs]$ srvctl add instance -d TROY_DR -i TROY2 -n ol6-112-dr-rac2
[oracle@ol6-112-dr-rac1 dbs]$

Now the instances are registered with CRS, shutdown both the instance in standby and start using srvctl command

[oracle@ol6-112-dr-rac1 dbs]$ sqlplus

SQL*Plus: Release 11.2.0.3.0 Production on Thu May 28 11:08:44 2020

Copyright (c) 1982, 2011, Oracle.  All rights reserved.

Enter user-name: /as sysdba

Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
With the Partitioning, Real Application Clusters, Automatic Storage Management, OLAP,
Data Mining and Real Application Testing options

TROY1@ol6-112-dr-rac1 > shu immediate
ORA-01109: database not open


Database dismounted.
ORACLE instance shut down.

before that create spfile

TROY1@ol6-112-dr-rac1 > create spfile='/u01/app/oracle/product/11.2.0.3/db_1/dbs/spfileTROY1.ora' from pfile='/u01/app/oracle/product/11.2.0.3/db_1/dbs/initTROY1.ora';

File created.

similarly on node2

[oracle@ol6-112-dr-rac2 ~]$ sqlplus

SQL*Plus: Release 11.2.0.3.0 Production on Thu May 28 10:56:30 2020

Copyright (c) 1982, 2011, Oracle.  All rights reserved.

Enter user-name: /as sysdba

SQL> shu immediate
ORA-01109: database not open


Database dismounted.
ORACLE instance shut down.
SQL> create spfile='/u01/app/oracle/product/11.2.0.3/db_1/dbs/spfileTROY2.ora' from pfile='/u01/app/oracle/product/11.2.0.3/db_1/dbs/initTROY2.ora';

File created.

Start the standby database using srvctl

[oracle@ol6-112-dr-rac1 dbs]$ srvctl start database -d TROY_DR -o mount
[oracle@ol6-112-dr-rac1 dbs]$ srvctl status database -d TROY_DR
Instance TROY1 is running on node ol6-112-dr-rac1
Instance TROY2 is running on node ol6-112-dr-rac2

start the recovery process in Standby node 1

[oracle@ol6-112-dr-rac1 dbs]$ sqlplus

SQL*Plus: Release 11.2.0.3.0 Production on Thu May 28 11:13:47 2020

Copyright (c) 1982, 2011, Oracle.  All rights reserved.

Enter user-name: /as sysdba

Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
With the Partitioning, Real Application Clusters, Automatic Storage Management, OLAP,
Data Mining and Real Application Testing options

TROY1@ol6-112-dr-rac1 > alter database recover managed standby database disconnect from session;

Database altered.

TROY1@ol6-112-dr-rac1 >

Move spfile in ASM and point it using the pfile’s in $ORACLE_HOME/dbs location of both the nodes in Standby

I am using the pfile which was modified with rac parameters

TROY1@ol6-112-dr-rac1 > create spfile='+DATA/troy/spfiletroy.ora' from pfile='/u01/app/oracle/product/11.2.0.3/db_1/dbs/initTROY1.ora';

File created.
[oracle@ol6-112-dr-rac1 dbs]$ rm -rf spfileTROY1.ora
[oracle@ol6-112-dr-rac1 dbs]$ rm -rf initTROY1.ora
[oracle@ol6-112-dr-rac1 dbs]$ vi initTROY1.ora
[oracle@ol6-112-dr-rac1 dbs]$ cat initTROY1.ora
spfile='+DATA/troy/spfiletroy.ora'

node 2

[oracle@ol6-112-dr-rac2 dbs]$ rm -rf initTROY2.ora spfileTROY2.ora
[oracle@ol6-112-dr-rac2 dbs]$ vi initTROY2.ora
[oracle@ol6-112-dr-rac2 dbs]$ cat initTROY2.ora
spfile='+DATA/troy/spfiletroy.ora'

TROY1@ol6-112-dr-rac1 > sho parameter spfi

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
spfile                               string      +DATA/troy/spfiletroy.ora

start stop the database one more time

[oracle@ol6-112-dr-rac1 dbs]$ srvctl stop database -d TROY_DR
[oracle@ol6-112-dr-rac1 dbs]$ srvctl start database -d TROY_DR -o mount
[oracle@ol6-112-dr-rac1 dbs]$ srvctl status database -d TROY_DR
Instance TROY1 is running on node ol6-112-dr-rac1
Instance TROY2 is running on node ol6-112-dr-rac2

start mrp from 1st node

[oracle@ol6-112-dr-rac1 dbs]$ sqlplus

SQL*Plus: Release 11.2.0.3.0 Production on Thu May 28 11:21:07 2020

Copyright (c) 1982, 2011, Oracle.  All rights reserved.

Enter user-name: /as sysdba

Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
With the Partitioning, Real Application Clusters, Automatic Storage Management, OLAP,
Data Mining and Real Application Testing options

TROY1@ol6-112-dr-rac1 > alter database recover managed standby database disconnect from session;

Database altered.

TROY1@ol6-112-dr-rac1 >

switch logfile on prod and check the sync

TROY1@ol6-112-rac1 > alter system switch logfile;

System altered.

TROY1@ol6-112-dr-rac1 > select THREAD#,max(sequence#) from v$archived_log group by THREAD#;
select THREAD#,max(sequence#) from v$archived_log  where applied='YES' group by THREAD#;

   THREAD# MAX(SEQUENCE#)
---------- --------------
         1             60
         2             45

TROY1@ol6-112-dr-rac1 >
   THREAD# MAX(SEQUENCE#)
---------- --------------
         1             59
         2             44