Procedure :
1. BASIC SETUP AND SETTINGS
a. Primary Host
a.1. db_name = ABC
a.2. db_unique_name = ABCDC
b. Standby Host
b.1. db_name = ABC
b.2. db_uniquie_name = ABCDR
2. SETUP ON PRIMARY
a. Oracle Initialization Parameters to be added in initABC.ora
*.db_unique_name='ABCDC'
*.dg_broker_start=TRUE
*.log_archive_dest_1='LOCATION=" /oracle/ABC/oraarch/ABCarch", valid_for=(ONLINE_LOGFILE,ALL_ROLES)'
*.log_archive_dest_state_1='ENABLE'
*.log_archive_format='%t_%s_%r.dbf'
*.log_archive_max_processes=2
*.log_archive_min_succeed_dest=1
*.log_archive_trace=0
*.log_file_name_convert='ABC','ABC'
*.standby_file_management='AUTO
*.fal_client='abc_primary.world'
*.fal_server=' '
*.log_archive_dest_2='service="abc_standby.world"','ASYNC NOAFFIRM delay=0 optional compression=disable max_failure=0 max_connections=1 reopen=300 db_unique_name="abcdr" net_timeout=30','valid_for=(online_logfile,all_roles)'
*.log_archive_config='dg_config=(ABCDC,ABCDR)'
b. Configuration
b.1. Listener Setting
ADMIN_RESTRICTIONS_LISTENER = on
LISTENER =
(ADDRESS_LIST =
(ADDRESS =
(PROTOCOL = IPC)
(KEY = ABC.WORLD)
)
(ADDRESS=
(PROTOCOL = IPC)
(KEY = ABC)
)
(ADDRESS =
(COMMUNITY = SAP.WORLD)
(PROTOCOL = TCP)
(HOST = hostname)
(PORT = 1521)
)
)
STARTUP_WAIT_TIME_LISTENER = 0
CONNECT_TIMEOUT_LISTENER = 10
TRACE_LEVEL_LISTENER = OFF
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = ABC)
(ORACLE_HOME = /oracle/ABC/122)
)
(SID_DESC =
(SID_NAME = ABC)
(GLOBAL_DBNAME=ABC_DGMGRL)
(ORACLE_HOME = /oracle/ABC/122)
)
)
ADR_BASE_LISTENER = /oracle/ABC/saptrace
c. Tnsnames Settings
ABC_STANDBY.WORLD=
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS =
(COMMUNITY = SAP.WORLD)
(PROTOCOL = TCP)
(HOST = DR_hostname)
(PORT = 1521)
)
)
(CONNECT_DATA =
(INSTANCE_NAME = ABC)
(UR=A)
(SERVICE_NAME = ABC.WORLD)
)
)
ABC_PRIMARY.WORLD=
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS =
(COMMUNITY = SAP.WORLD)
(PROTOCOL = TCP)
(HOST = DC_hostname)
(PORT = 1521)
)
)
(CONNECT_DATA =
(INSTANCE_NAME = ABC)
(UR=A)
(SERVICE_NAME = ABC.WORLD)
)
)
d. Sqlnet Settings
AUTOMATIC_IPC = ON
TRACE_LEVEL_CLIENT = OFF
NAMES.DEFAULT_DOMAIN = WORLD
# 05.01.06 unsorported parameter now
#NAME.DEFAULT_ZONE = WORLD
# 05.01.06 set the default to 10
SQLNET.EXPIRE_TIME = 10
# 05.01.06 set to default
#TCP.NODELAY=YES
# 05.01.06 set to 32768
DEFAULT_SDU_SIZE=32768
NAMES.DIRECTORY_PATH= (TNSNAMES, ONAMES, HOSTNAME)
3. SETUP ON STANDBY
a. Oracle Initialization Parameters to be added in initABC.ora
*.db_unique_name='ABCDR'
*.dg_broker_start=TRUE
*.log_archive_dest_1='LOCATION=" /oracle/ABC/oraarch/ABCarch", valid_for=(ONLINE_LOGFILE,ALL_ROLES)'
*.log_archive_dest_state_1='ENABLE'
*.log_archive_format='%t_%s_%r.dbf'
*.log_archive_max_processes=2
*.log_archive_min_succeed_dest=1
*.log_archive_trace=0
*.log_file_name_convert='ABC','ABC'
*.standby_file_management='AUTO
*.log_archive_dest_2='location=/oracle/ABC/oraarch/ABCarch','valid_for=(STANDBY_LOGFILE,STANDBY_ROLE)'
*.fal_client='ABC_STANDBY.WORLD'
*.fal_server='abc_primary.world'
*.log_archive_config='dg_config=(ABCDR,ABCDC)'
b. Configuration
b.1. Listener Setting
ADMIN_RESTRICTIONS_LISTENER = on
LISTENER =
(ADDRESS_LIST =
(ADDRESS =
(PROTOCOL = IPC)
(KEY = ABC.WORLD)
)
(ADDRESS=
(PROTOCOL = IPC)
(KEY = ABC)
)
(ADDRESS =
(COMMUNITY = SAP.WORLD)
(PROTOCOL = TCP)
(HOST = hostname)
(PORT = 1521)
)
)
STARTUP_WAIT_TIME_LISTENER = 0
CONNECT_TIMEOUT_LISTENER = 10
TRACE_LEVEL_LISTENER = OFF
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = ABC)
(ORACLE_HOME = /oracle/ABC/122)
)
(SID_DESC =
(SID_NAME = ABC)
(GLOBAL_DBNAME=ABC_DGMGRL)
(ORACLE_HOME = /oracle/ABC/122)
)
)
ADR_BASE_LISTENER = /oracle/ABC/saptrace
c. Tnsnames Settings
ABC.WORLD=
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS =
(COMMUNITY = SAP.WORLD)
(PROTOCOL = TCP)
(HOST = hostname)
(PORT = 1521)
)
)
(CONNECT_DATA =
(SID = ABC)
(GLOBAL_NAME = ABC.WORLD)
)
)
ABC_STANDBY.WORLD=
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS =
(COMMUNITY = SAP.WORLD)
(PROTOCOL = TCP)
(HOST = hostname)
(PORT = 1521)
)
)
(CONNECT_DATA =
(INSTANCE_NAME = ABC)
(UR=A)
(SERVICE_NAME = ABC.WORLD)
)
)
ABC_PRIMARY.WORLD=
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS =
(COMMUNITY = SAP.WORLD)
(PROTOCOL = TCP)
(HOST = 10.101.1.196)
(PORT = 1521)
)
)
(CONNECT_DATA =
(INSTANCE_NAME = ABC)
(UR=A)
(SERVICE_NAME = ABC.WORLD)
)
)
d. Sqlnet Settings
AUTOMATIC_IPC = ON
TRACE_LEVEL_CLIENT = OFF
NAMES.DEFAULT_DOMAIN = WORLD
# 05.01.06 unsorported parameter now
#NAME.DEFAULT_ZONE = WORLD
# 05.01.06 set the default to 10
SQLNET.EXPIRE_TIME = 10
# 05.01.06 set to default
#TCP.NODELAY=YES
# 05.01.06 set to 32768
DEFAULT_SDU_SIZE=32768
NAMES.DIRECTORY_PATH= (TNSNAMES, ONAMES, HOSTNAME)
4. COPY PRIMARY DATABASE TO STANDBY SITE
a. Primary Site
a.1. Begin Backup
SQL> alter database begin backup;
a.2. Copy Data Files and Redolog Files
scp -r /oracle/ABC/sapdata* oracle@pgpodrprd:/oracle/ABC/
scp -r /oracle/ABC/mirrlogA/log* oracle@drprd:/oracle/ABC/mirrlogA
scp -r /oracle/ABC/origlogA/log* oracle@drprd:/oracle/ABC/origlogA
scp -r /oracle/ABC/mirrlogB/log* oracle@drprd:/oracle/ABC/mirrlogB
scp -r /oracle/ABC/origlogB/log* oracle@drprd:/oracle/ABC/origlogB
a.3. End Backup
SQL> alter database end backup;
Note : Before copying the data from Primary Site to Secondary Site , Shutdown the application and database of Standby Site and clear all the content of /oracle/ABC/sapdata*, /oracle/ABC/mirrlog* , /oracle/ABC/origlog*
a.4 Shutdown the database
SQL>shutdown immediate;
a.5. Create backup Control File.
SQL> create spfile from pfile;
SQL> startup mount;
SQL> alter database create standby controlfile as '/oracle/ABC/stdby_control.dbf' reuse;
a.6. Copy Standby Control File to Standby Host
scp -r /oracle/ABC/stdby_control.dbf oracle@pgpodrprd:/oracle/ABC/
a.7. Distributing the Password file to Standby
scp $ORACLE_HOME/dbs/orapwABC oracle@pgpodrprd:$ORACLE_HOME/dbs/orapwABC
a.8. Creating Standby Redolog Files
mkdir /oracle/ABC/standbylog
SQL> alter database add standby logfile '/oracle/ABC/standbylog/srl1.dbf' size 209715200 reuse;
SQL> alter database add standby logfile '/oracle/ABC/standbylog/srl2.dbf' size 209715200 reuse;
SQL> alter database add standby logfile '/oracle/ABC/standbylog/srl3.dbf' size 209715200 reuse;
SQL> alter database add standby logfile '/oracle/ABC/standbylog/srl4.dbf' size 209715200 reuse;
SQL> alter database add standby logfile '/oracle/ABC/standbylog/srl5.dbf' size 209715200 reuse;
a.9. Opening Primary Database
SQL> alter database open;
b. Standby Site
b.1. Distributing Standby Control File
cd /oracle/ABC
cp stdby_controlf.dbf /oracle/ABC/origlogA/cntrl/cntrlABC.dbf
cp stdby_controlf.dbf /oracle/ABC/origlogB/cntrl/cntrlABC.dbf
cp stdby_controlf.dbf /oracle/ABC/sapdata1/cntrl/cntrlABC.dbf
b.2. Mounting the Database
SQL> create spfile from pfile;
SQL> startup mount;
b.3. Creating Standby Redolog Files
mkdir /oracle/ABC/standbylog
SQL> alter database add standby logfile '/oracle/ABC/standbylog/srl1.dbf' size 209715200 reuse;
SQL> alter database add standby logfile '/oracle/ABC/standbylog/srl2.dbf' size 209715200 reuse;
SQL> alter database add standby logfile '/oracle/ABC/standbylog/srl3.dbf' size 209715200 reuse;
SQL> alter database add standby logfile '/oracle/ABC/standbylog/srl4.dbf' size 209715200 reuse;
SQL> alter database add standby logfile '/oracle/ABC/standbylog/srl5.dbf' size 209715200 reuse;
b.4. Mounting Standby Database
SQL> startup mount;
5. Configurating DataGaurd
a. Primary Site
a.1. Creating the Configuration on Primary
pgpABCrddc1:oracle 51> dgmgrl
DGMGRL> connect sys
DGMGRL> create configuration ABC as primary database is ABCDC connect identifier is ABC_PRIMARY.WORLD;
a.2. Adding the physical Standby Database
DGMGRL> add database ABCDR as connect identifier is ABC_STANDBY.WORLD;
DGMGRL> show configuration
a.3. Overview od DataGuard Properties
DGMGRL> show database ABCDC
DGMGRL> show database verbose ABCDC
DGMGRL> show database ABCDR
DGMGRL> show database verbose ABCDR
a.4. Enable configuration
DGMGRL> enable configuration;
Note: Check Alert.log for both primary and secondary Site for any error.
6. TESTING THE SWITCHOVER
a. Primary Site to Secondary Site
DGMGRL> switchover to ABCDR;
b. Secondary Site to Primary Site
DGMGRL> switchover to ABCDC;