Pages

Sunday, May 10, 2020

Oracle 12c Data Guard configuration for SAP


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;

No comments:

Post a Comment