04_Dataguard v5
Short Description
04_Dataguard v5...
Description
Physical standby database Implementation OVERVIEW...................................................................................................................................2 PREPARATION STEPS...............................................................................................................3 IMPLEMENTATION STEPS......................................................................................................4 STEPS TO BE DONE ON THE PRIMARY SERVER..............................................................4 STEP 1: BACKUP THE PRIMARY DATABASE DATAFILES .................................................................4 STEP 3: CONFIGURE ORACLE NET...............................................................................................5 STEP 4: CONFIGURE DATABASE INITIALISATION PARAMETER FILE...............................................5 STEPS TO BE DONE ON THE STANDBY SERVER..............................................................7 STEP 1: CONFIGURE ORACLE NET...............................................................................................7 STEP 2: CONFIGURE THE PHYSICAL STANDBY DATABASE INITIALISATION PARAMETER...............7 STEP 2: RESTORE DATABASE FILES FROM THE BACKUP LOCATION.............................................8 STEP 3: START AUTOMATIC STANDBY DATABASE RECOVERY......................................................9 SWITCHOVER DATABASE ROLE.........................................................................................10 STEP 1: CHECK THE PRIMARY DATABASE READINESS FOR SWITCHOVER...................................10 STEP 2: SWITCHING THE PRIMARY TO STANDBY........................................................................10 STEP 3: SWITCH FROM STANDBY TO PRIMARY...........................................................................11 STEP 4: START AUTOMATIC STANDBY DATABASE RECOVERY....................................................12 APPENDIX A: COMMANDS....................................................................................................13 APPENDIX B: PROTECTION MODES..................................................................................14 APPENDIX C: DATA GUARD USEFUL COMMANDS........................................................16 SWITCHOVER DATABASE ROLE..................................................................................................16 READ ONLY DATABASE ROLE....................................................................................................16 FAILOVER DATABASE ROLE – IN CASE OF TOTAL DISASTER......................................................17 START STANDBY RECOVERY......................................................................................................17
Version 5 Document Name: 260215700.doc
Page 1
Physical standby database Implementation Overview These Note Describe a physical standby database configuration for a Real Application Clusters (RAC) primary environment. A physical standby database is physically identical to the primary database, with on-disk database structures that are identical to the primary database on a block-for-block basis. The physical standby database is updated by performing recovery. It can either be recovering data or open for read-only reporting. The environment that we have is as shown in the diagram below,
IBM P595 AIX 5.3 ML3 16x1.9GHz 32GB RAM
Private Network
IBM P670 AIX 5.3 ML3 16x1500 MHz 16GB RAM
IBM P595 AIX 5.3 ML3 16x1.9GHz 32GB RAM
WAN WAN
SAN Switches
DS4800 Storage 28x36GB Disks
DS4800 Storage 28x36GB Disks
KFR Datacenter Primary Site
OLAYA Datacenter DR Site
Version 5 Document Name: 260215700.doc
SAN Switches
Page 2
Physical standby database Implementation
Preparation Steps Before starting in the implementation steps make sure that the following setup exists, Primary database must be running in ARCHIVELOG mode Stop database (srvctl stop database –d etrade) Startup mount Alter database archivelog; alter system set LOG_ARCHIVE_FORMAT='etrade_%t_%s_%r.arc' scope=spfile; alter system set LOG_ARCHIVE_DEST_1='LOCATION=+DGARCH1 MANDATORY REOPEN=60'; The primary database must be in force logging mode. SQL> ALTER DATABASE FORCE LOGGING; Oracle Server installed on standby server – software only
Version 5 Document Name: 260215700.doc
Page 3
Physical standby database Implementation
Implementation Steps Assumption: 1. We have 'etrade' database having two instances etrade1 and etrade2 running on two different server on AIX 5.3 platform. 2. The RMAN directory for backup is /orahome/backup with enough space for the full database backup 3. ASM database is created in the standby environment with similar names like productions and the init.ora parameter "processes" equal to 150 4. hosts file is update in the primary and standby machines correctly
Steps To Be Done On the Primary Server Step 1: Backup the primary database datafiles 1. Shutdown the primary database RAC instances srvctl stop database –d etrade
2. Start up one instance in mount state, e.g. etrade1 # export ORACLE_SID=etrade1 # rman target / RMAN> STARTUP MOUNT
3. Backup database using RMAN RMAN> CONFIGURE DEVICE TYPE DISK PARALLELISM 4 BACKUP TYPE TO COMPRESSED BACKUPSET; RMAN> CONFIGURE CHANNEL DEVICE TYPE DISK FORMAT '/orahome/backup/DF_%s_%p_%c'; RMAN> BACKUP DATABASE;
4. Reopen the Primary database. RMAN> ALTER DATABASE OPEN;
5. Create the standby database control file by issuing the following command, SQL> ALTER DATABASE CREATE STANDBY CONTROLFILE AS '/orahome/backup/etrade_stdbycf.ctl';
6. Transfer the datafiles and control files from /orahome/backup directory to the physical standby machine/site with same directory path (so that the restore database step can find it).
Version 5 Document Name: 260215700.doc
Page 4
Physical standby database Implementation
Step 3: Configure Oracle Net 7. Add a service for the standby database in the tnsnames.ora in all instances and another one for the primary database (etrade_prim & etrade_stndby) ETRADE1_PRIM = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = tcom1_vip)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = etrade.baj) (INSTANCE_NAME = etrade1) ) ) ETRADE2_PRIM = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = tcom2_vip)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = etrade.baj) (INSTANCE_NAME = etrade2) ) ) ETRADEDR= (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = Olaya_Tad)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = etradedr.baj) (INSTANCE_NAME = etradedr) ) )
Step 4: Configure database initialisation parameter file 8. Modify or add the following parameters, Parameter
Value
DB_UNIQUE_NAME
'etrade' RAC
*.LOG_ARCHIVE_DEST_STATE_1
ENABLE ‘ALL’
*.LOG_ARCHIVE_DEST_STATE_2
DEFER ( after standby database configuration complete convert this value to enable) ‘ALL’
Version 5 Document Name: 260215700.doc
Page 5
Physical standby database Implementation *.LOG_ARCHIVE_DEST_1
'LOCATION=+DGARCH1 MANDATORY REOPEN=60' This location should be shared and all instance have access to it ‘RAC’
*.LOG_ARCHIVE_DEST_2
If spfile used then 'service=etradedr db_unique_name=etradedr LGWR ASYNC=20480' else if pfile used RAC’ you must specify this values for that parameter in each instance
*.LOG_ARCHIVE_FORMAT
etrade_%t_%s_%r.dbf ‘ALL’
*.REMOTE_ARCHIVE_ENABLE
TRUE ’ ALL’
*.LOG_ARCHIVE_CONFIG
'DG_CONFIG=(etrade,etradedr)'
*.FAL_SERVER
etradedr ‘RAC’
etrade1.FAL_CLIENT
etrade1_prim ‘RAC’
etrade2.FAL_CLIENT
etrade2_prim ‘RAC’
’ ALL’
Note: Special Consideration if Primary Database is in RAC Environment
Make sure that the parameter ‘LOG_ARCHIVE_FORMAT’ Includes %t for example LOG_ARCHIVE_FORMAT=%t_%s_%r.ARCH.
Make sure that LOG_ARCHIVE_FORMAT parameter is having the same value in the parameter file for both the RAC instances and in standby parameter file.
The LOG_ARCHIVE_DEST & LOG_ARCHIVE_DUPLEX_DEST parameters should be removed from the init file.
F
Version 5 Document Name: 260215700.doc
Page 6
Physical standby database Implementation Steps To Be Done On The Standby Server Step 1: Configure Oracle Net 9. Add a service for the standby database in the tnsnames.ora and another one for the primary database (ETRADE_PRIM & ETRADE_STDBY). Same as in point 7 ETRADE1_PRIM = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = tcom1_vip)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = etrade.baj) (INSTANCE_NAME = etrade1) ) ) ETRADE2_PRIM = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = tcom2_vip)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = etrade.baj) (INSTANCE_NAME = etrade2) ) ) ETRADE_STDBY= (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = Olaya_Tad)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = etrade.baj) (INSTANCE_NAME = etradedr) ) )
Step 2: Configure the physical standby database initialisation parameter Use initialization parameter of the primary site as a base for the standby database init.ora after performing the below changes on it. Parameter
Value
DB_UNIQUE_NAME
Etradedr
DB_NAME
ETRADE (Same as Production)
CONTROL_FILES
' /orahome/backup/etrade_stdbycf.ctl'
LOG_ARCHIVE_CONFIG
'DG_CONFIG=(etrade,etradedr)'
Version 5 Document Name: 260215700.doc
Page 7
Physical standby database Implementation LOG_ARCHIVE_DEST_1
'+DGARCH1' (location in the standby server)
LOG_ARCHIVE_DEST_STATE_1
ENABLE
LOG_ARCHIVE_FORMAT
ARCH_%t_%s_%r.dbf (Same as production)
FAL_SERVER
'etrade1_prim', 'etrade2_prim'
FAL_CLIENT
'etradedr'
STANDBY_ARCHIVE_DEST
'+DGARCH1' (location in the standby server)
STANDBY_FILE_MANAGEMENT
AUTO
The LOG_ARCHIVE_DEST & LOG_ARCHIVE_DUPLEX_DEST parameters should be removed from the init file. Note 1: when using a RAC based init.ora then remove all cluster related entries, e.g. cluster_database, remote_listener, instance_number, thread… Note 2: make sure to create all dump directories, e.g. adump, udump, cdump, bdump Step 2: Restore database Files from the Backup Location 10. Startup Database after creating a password file using the same sys password used in production site (the format of file name is orapwSID for unix platform, while it is PWDSID.ora for NT) set ORACLE_SID=etradedr orapwd file=/orahome/oracle/product/10.2.0/db/dbs/orapwetradedr password= entries=5 SQL> CONNECT sys/password as sysdba SQL> STARTUP NOMOUNT PFILE=prodinit.ora 11. Mount the standby database SQL> ALTER DATABASE MOUNT STANDBY DATABASE; 12. Restore Database Files set ORACLE_SID=etradedr Rman target / RMAN> CONFIGURE DEVICE TYPE DISK PARALLELISM 4 BACKUP TYPE TO COMPRESSED BACKUPSET;
RMAN>Restore Database; 13. Add a new standby redo log file group to a standby database using the following formula (in our case the it will be 6) (number of log files per thread + 1) * number of threads
Version 5 Document Name: 260215700.doc
Page 8
Physical standby database Implementation SQL> ALTER DATABASE ADD STANDBY LOGFILE THREAD 1 GROUP 5 ('+DGREDO1/standby_redo05a.log') SIZE 400M, GROUP 6 ('+DGREDO1/standby_redo06a.log') SIZE 400M, GROUP 7 ('+DGREDO1/standby_redo07a.log') SIZE 400M; SQL> ALTER DATABASE ADD STANDBY LOGFILE THREAD 2 GROUP 8 ('+DGREDO2/standby_redo08a.log') SIZE 400M, GROUP 9 ('+DGREDO2/standby_redo09a.log') SIZE 400M, GROUP 10 ('+DGREDO2/standby_redo10a.log') SIZE 400M;
Step 3: Start Automatic Standby database Recovery. 14. Start standby database recovery, Before this step set LOG_ARCHIVE_DEST_STATE_2=Enable On primary Database (scope=both) SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT FROM SESSION; (will only send data after logfile switch) For realtime sending of logfile data use: SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE DISCONNECT FROM SESSION;
Version 5 Document Name: 260215700.doc
Page 9
Physical standby database Implementation SwitchOver Database Role Switching database roles is always initiated from the primary database and is always completed on a standby database.
Step 1: Check the primary database readiness for Switchover In order to switch the primary database to standby all sessions should be disconnected. When issuing the statement below the output should be “TO STANDBY”. SQL> SELECT SWITCHOVER_STATUS FROM V$DATABASE; SWITCHOVER_STATUS -----------------TO STANDBY Step 2: Switching the primary to standby This can be done for the primary in open or mount phase, one standby database must be active in the Data Guard configuration. 1. The standby database must be mounted and have proper network connectivity. If the standby database is open for read-only access, the standby switchover operation will take longer, only one session allowed: If this is not the case first all sessions have to be closed (terminated), an indication is that the above query for the primary shows: SWITCHOVER_STATUS -----------------SESSIONS ACTIVE After terminating the other sessions the status will show: TO STANDBY. 2. Issue the following command on the primary database, SQL> ALTER DATABASE COMMIT TO SWITCHOVER TO STANDBY; The command closes the primary database (sets it in nomount state), archives any unarchived log files and applies them to the physical standby database, adds an end-ofredo marker to the header of the last log file being archived, creates a backup of the current control file (udump destination) and converts the current control file into a standby control file.
Version 5 Document Name: 260215700.doc
Page 10
Physical standby database Implementation 3. Switch the primary database to standby role SQL> shutdown immediate; SQL> Startup nomount SQL> alter database mount standby database; Step 3: Switch from standby to primary Standby instance should be mounted, only one session is allowed and the primary must have switched role to standby and the standby database must have applied the switchover notification from the primary database. 1. Check that the standby database is ready to be switched to primary role, SQL> SELECT SWITCHOVER_STATUS FROM V$DATABASE; SWITCHOVER_STATUS -----------------SESSIONS ACTIVE
Terminate all other sessions until result is: SWITCHOVER_STATUS -----------------TO PRIMARY
2. Issue the following command on the standby database, SQL> ALTER DATABASE COMMIT TO SWITCHOVER TO PRIMARY; This command guarantees the last log file has been received and applied through the end-of-redo marker, closes the database if it has been opened for read-only transactions and converts the standby control file to the current control file. 3. Switch the standby database to primary role Add the following parameters to the standby database init file, log_archive_dest_2='SERVICE=EXIMDBD1 LGWR SYNC MANDATORY REOPEN=30' log_archive_dest_state_2 =ENABLE Perform the following, SQL> shutdown SQL> Startup
Version 5 Document Name: 260215700.doc
Page 11
Physical standby database Implementation
Step 4: Start Automatic Standby database Recovery. 15. Start standby database recovery, SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT FROM SESSION;
Note: The standby database must have been in managed recovery mode prior to starting the switchover operation, so that the primary database switchover operation request can be coordinated. If managed recovery was not active, or the primary database switchover notification was unable to be processed, the switchover operation will not be allowed to proceed. Remarks A failover should not be performed except in case of emergencies. After failover the standby becomes primary and loses standby functionality. A new standby databse has to be setup.
Version 5 Document Name: 260215700.doc
Page 12
Physical standby database Implementation
APPENDIX A: Commands
Command
Description
RECOVER MANAGED STANDBY DATABASE CANCEL;
To stop the Automatic Recovery
ALTER DATABASE OPEN READ ONLY;
To open the database in READ ONLY mode
STARTUP NOMOUNT
Startup the standby database and start automatic recovery
ALTER DATABASE MOUNT STANDBY DATABASE; ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT FROM SESSION; ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE DISCONNECT FROM SESSION;
SELECT * FROM V$STANDBY_LOG;
Query v$managed_standby to see the status of processes involved in the configuration.
To determine if real-time apply is enabled, query the RECOVERY_MODE column of the V$ARCHIVE_DEST_STATUS view. It will contain the value MANAGED REAL TIME APPLY when real-time apply is enabled, as shown in the following example: SQL> SELECT RECOVERY_MODE FROM V$ARCHIVE_DEST_STATUS WHERE DEST_ID=2 ; RECOVERY_MODE ----------------------MANAGED REAL TIME APPLY
Version 5 Document Name: 260215700.doc
Page 13
Physical standby database Implementation APPENDIX B: Protection Modes Maximum Protection Mode
This protection mode ensures that no data loss will occur if the primary database fails. To provide this level of protection, the redo data needed to recover each transaction must be written to both the local online redo log and to the standby redo log on at least one standby database before the transaction commits. To ensure data loss cannot occur, the primary database shuts down if a fault prevents it from writing its redo stream to at least one remote standby redo log. For multiple-instance RAC databases, Data Guard shuts down the primary database if it is unable to write the redo records to at least one properly configured database instance. The maximum protection mode requires that at least one standby instance has a standby redo log and the LGWR, SYNC, and AFFIRM attributes be used on the LOG_ARCHIVE_DEST_n parameter for this destination. Maximum Availability Mode
This protection mode provides the highest level of data protection that is possible without compromising the availability of the primary database. Like maximum protection mode, a transaction will not commit until the redo needed to recover that transaction is written to the local online redo log and to at least one remote standby redo log. Unlike maximum protection mode, the primary database does not shut down if a fault prevents it from writing its redo stream to a remote standby redo log. Instead, the primary database operates in maximum performance mode until the fault is corrected and all gaps in redo log files are resolved. When all gaps are resolved, the primary database automatically resumes operating in maximum availability mode. This mode ensures that no data loss will occur if the primary database fails, but only if a second fault does not prevent a complete set of redo data from being sent from the primary database to at least one standby database. Like maximum protection mode, the maximum availability mode requires that you: Configure standby redo log files on at least one standby database. Set the SYNC, LGWR, and AFFIRM attributes of the LOG_ARCHIVE_DEST_n parameter for at least 1 standby database. Maximum Performance Mode
This protection mode (the default) provides the highest level of data protection that is possible without affecting the performance of the primary database. This is accomplished by allowing a transaction to commit as soon as the redo data needed to recover that transaction is written to the local online redo log. The primary database’s redo data stream is also written to at least one standby database, but that redo stream is written asynchronously with respect to the commitment of the transactions that create the redo data. When network links with sufficient bandwidth are used, this mode provides a level of data protection that approaches that of maximum availability mode with minimal impact on primary database performance.
Version 5 Document Name: 260215700.doc
Page 14
Physical standby database Implementation The maximum performance mode enables you to either set the LGWR and ASYNC attributes, or set the ARCH attribute on the LOG_ARCHIVE_DEST_n parameter for the standby database destination. If the primary database fails, you can reduce the amount of data that is not received on the standby destination by setting the LGWR and ASYNC attributes.
Version 5 Document Name: 260215700.doc
Page 15
Physical standby database Implementation APPENDIX C: Data Guard Useful Commands
Switchover Database Role 1) ON PRIMARY a. Select switchover_status from v$database; SWITCHOVER_STATUS -----------------TO STANDBY b. ALTER DATABASE COMMIT TO SWITCHOVER TO STANDBY WITH SESSION SHUTDOWN; c.
shutdown immediate;
d. Startup nomount e. alter database mount standby database; f.
ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT FROM SESSION;
2) ON STANDBY a. SELECT SWITCHOVER_STATUS FROM V$DATABASE; SWITCHOVER_STATUS -----------------TO PRIMARY b. ALTER DATABASE COMMIT TO SWITCHOVER TO PRIMARY; - Add to init file c.
ALTER SYSTEM SET log_archive_dest_2='SERVICE=EXIMDBD1 LGWR SYNC OPTIONAL REOPEN=30';
d. ALTER SYSTEM SET log_archive_dest_state_2 = ENABLE – Add to init file e. shutdown f.
startup
3) ON PRIMARY a. ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT FROM SESSION;
Read Only Database Role 1) ON PRIMARY a. ALTER SYSTEM SWITCH LOGFILE;
4) ON STANDBY a. ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL; B. ALTER DATABASE OPEN READ ONLY;
Version 5 Document Name: 260215700.doc
Page 16
Physical standby database Implementation Failover Database Role – In case of total disaster a. ALTER DATABASE RECOVER MANAGED STANDBY DATABASE Cancel; b. ALTER DATABASE COMMIT TO SWITCHOVER TO PRIMARY; c.
SHUTDOWN IMMEDIATE;
d. STARTUP MOUNT e. ALTER DATABASE SET STANDBY DATABASE TO MAXIMIZE PERFORMANCE; f.
ALTER DATABASE OPEN;
Start Standby Recovery a. startup nomount b. ALTER DATABASE MOUNT STANDBY DATABASE; c.
ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT FROM SESSION;
Version 5 Document Name: 260215700.doc
Page 17
View more...
Comments