By Mouhamadou Diaw
Oracle 19C is now available on premise. There are lot of new features. One for the Data Guard Broker is that now we can dynamically change the fast-start failover target to a specified member in the list without disabling the fast-start failover.
I have tested this new feature and is describing this in this blog
I am using 3 servers with Oracle Linux
The Data Guard is already built and the broker is already configured
To enable the fast-start failover there are some requirements. Note that flashback database must be enabled for both databases.
First we put the the transport to SYNC for 3 databases
|
1
2
3
4
5
6
|
DGMGRL> edit database 'DB19C_SITE1' set property LogXptMode='SYNC';Property "logxptmode" updatedDGMGRL> edit database 'DB19C_SITE2' set property LogXptMode='SYNC';Property "logxptmode" updatedDGMGRL> edit database 'DB19C_SITE3' set property LogXptMode='SYNC';Property "logxptmode" updated |
After we change the protection to Maxavailability
|
1
2
|
DGMGRL> EDIT CONFIGURATION SET PROTECTION MODE AS MaxAvailability;Succeeded. |
Then we set the fast-start failover target for both databases
|
1
2
|
DGMGRL> enable fast_start failover;Enabled in Zero Data Loss Mode. |
Below the status of the configuration. And we can see that DB19C_SITE2 is the target for the fast-start failover
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
DGMGRL> show configurationConfiguration - db19c Protection Mode: MaxAvailability Members: DB19C_SITE1 - Primary database DB19C_SITE2 - (*) Physical standby database DB19C_SITE3 - Physical standby databaseFast-Start Failover: Enabled in Zero Data Loss ModeConfiguration Status:SUCCESS (status updated 55 seconds ago)DGMGRL> |
The status of the observer will also show as the active target
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
DGMGRL> show observerConfiguration - db19c Primary: DB19C_SITE1 Active Target: DB19C_SITE2Observer "standserver2" - Master Host Name: standserver2 Last Ping to Primary: 2 seconds ago Last Ping to Target: 4 seconds agoDGMGRL> |
For example let’s say we want to switchover to DB19C_SITE3
|
1
2
3
4
5
6
7
|
DGMGRL> switchover to 'DB19C_SITE3';Performing switchover NOW, please wait...Error: ORA-16655: specified standby database not the current fast-start failover target standbyFailed.Unable to switchover, primary database is still "DB19C_SITE1"DGMGRL> |
As we can see we cannot because the first fast-start failover target is DB19C_SITE2. We have to change it to DB19C_SITE3
To dynamiccaly do this change , we use the command SET FAST_START FAILOVER TARGET.
|
1
2
3
4
|
DGMGRL> SET FAST_START FAILOVER TARGET TO 'DB19C_SITE3';Waiting for Fast-Start Failover target to change to "DB19C_SITE3"...Succeeded.DGMGRL> |
We can query the broker to verify the change
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
DGMGRL> show configurationConfiguration - db19c Protection Mode: MaxAvailability Members: DB19C_SITE1 - Primary database DB19C_SITE3 - (*) Physical standby database DB19C_SITE2 - Physical standby databaseFast-Start Failover: Enabled in Zero Data Loss ModeConfiguration Status:SUCCESS (status updated 22 seconds ago)DGMGRL> |
And then now I can switchover to DB19C_SITE3
|
1
2
3
4
5
6
7
8
9
10
11
12
13
|
DGMGRL> switchover to 'DB19C_SITE3';Performing switchover NOW, please wait...New primary database "DB19C_SITE3" is opening...Operation requires start up of instance "DB19C" on database "DB19C_SITE1"Starting instance "DB19C"...Connected to an idle instance.ORACLE instance started.Connected to "DB19C_SITE1"Database mounted.Database opened.Connected to "DB19C_SITE1"Switchover succeeded, new primary is "DB19C_SITE3"DGMGRL> |
And the new status of the configuration
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
DGMGRL> show configurationConfiguration - db19c Protection Mode: MaxAvailability Members: DB19C_SITE3 - Primary database DB19C_SITE1 - (*) Physical standby database DB19C_SITE2 - Physical standby databaseFast-Start Failover: Enabled in Zero Data Loss ModeConfiguration Status:SUCCESS (status updated 51 seconds ago)DGMGRL> |