It’s very simple to perform failover using data guard broker. If primary database is unavailable, we can activate standby using below method. Note, in a failover, we have lost primary.
Crash the primary: Let us simulate failure. We will kill the PMON process at OS level.
On primary: =========== [[email protected] admin]$ ps -ef|grep pmon grid 2636 1 0 Apr15 ? 00:00:12 asm_pmon_+ASM oracle 16914 1 0 14:03 ? 00:00:00 ora_pmon_proddb oracle 17722 15893 0 15:08 pts/0 00:00:00 grep pmon [[email protected] admin]$ kill -9 16914
Failover to proddb_st: connect to standby database proddb_st (as primary crashed or not available) and failover to standby proddb_st
On standby: =========== dgmgrl sys/[email protected]_st DGMGRL> show configuration; DGMGRL> FAILOVER TO proddb_st; Performing failover NOW, please wait... Failover succeeded, new primary is "proddb_st" DGMGRL> show configuration;
Rebuild primary after failover
Post failover, there are two methods of rebuilding your failed primary:
- Method 1: Rebuild from scratch –> RMAN duplicate
- Method 2: Flashback database –> only if Flashback was enabled
Reinstate failed primary: When you use data guard broker, with just one command, the primary can be rebuilt. Start the failed primary server, in this case start proddb server
On current primary (proddb_st): =============================== dgmgrl sys/[email protected]_st DGMGRL> show configuration; DGMGRL> reinstate database proddb; Reinstating database "proddb", please wait... Operation requires shutdown of instance "proddb" on database "proddb" Shutting down instance "proddb"... ORA-01109: database not open Database dismounted. ORACLE instance shut down. Operation requires startup of instance "proddb" on database "proddb" Starting instance "proddb"... ORACLE instance started. Database mounted. Continuing to reinstate database "proddb" ... Reinstatement of database "proddb" succeeded
Verify proddb post reinstate: The best part is broker will automatically recover earlier failed primary proddb, mount the database and start MRP too
On failed primary (proddb): =========================== sqlplus / as sysdba SQL> select name,open_mode from v$database; SQL> select process, status, sequence# from v$managed_standby;
Switchover to get original configuration: At this stage, you can perform switchover to again get back original configuration
On current primary (proddb_st): =============================== dgmgrl sys/[email protected]_st DGMGRL> switchover to proddb;