It is quite facinating to see how the data guard broker simplifies this setup for the DBA.
In a recent excercise @ work, I had a data guard configuration consisting of 1 primary and 3 physical standby database.
A fourth was to be added as a terminal standby database.
First, clone the new database for standby.
You can use any of the databases in the configuration as a source, from which to create a terminal database, both primary or any of the mounted physical standby databases.
When the clone is finished, add the new database to the broker config:
dgmgrl -echo sys/password@primdb_dgmgrl.oric.no as sysdba Welcome to DGMGRL, type "help" for information. Connected to "primdb" Connected as SYSDBA.Add the new database:
DGMGRL> add database 'tstby' as connect identifier is tstby.oric.no maintained as physical; add database 'tstby' as connect identifier is tstb.oric.no maintained as physical; Database "tstby" added DGMGRL> show configuration; show configuration; Configuration - dgconfig1 Protection Mode: MaxPerformance Members: primdb - Primary database stby1 - Physical standby database stby2 - Physical standby database stby3 - Physical standby database tstby - Physical standby database (disabled) Fast-Start Failover: DISABLEDNotice how all the standby databases are indented directly underneath the primary database, indicating that they receive their redo information directly from the primary database.
I then add the redoroutes property to the primary:
DGMGRL> edit database primdb set property redoroutes='(LOCAL:stby1,stby2,stby3 ASYNC)(stby1:tstby ASYNC)'; edit database primdb set property redoroutes='(LOCAL:stby1,stby2,stby3 ASYNC)(stby1:tstby ASYNC)'; Property "redoroutes" updatedAdd the redoroutes property for when the primary and the choosen standby switches roles:
DGMGRL> edit database stby1 set property redoroutes='(LOCAL:primdb,stby2,stby3 ASYNC)(primdb:tstb ASYNC)'; edit database stby1 set property redoroutes='(LOCAL:primdb,stby2,stby3 ASYNC)(primdb:tstb ASYNC)'; Property "redoroutes" updatedNote that both of these rules must be set, otherwise your terminal standby database will not receive logs. You will see messages like the follwing:
Configuration - dgconfig1 Protection Mode: MaxPerformance Members: primdb - Primary database stby1 - Physical standby database stby2 - Physical standby database stby3 - Physical standby database Members Not Receiving Redo: tstby - Physical standby database Error: ORA-16685: database does not receive redo data
View the configuration again
You will see that the broker has understood that the tstb is acting like a terminal standby database for physical standby database "stby2":
DGMGRL> show configuration; show configuration; Configuration - dgconfig1 Protection Mode: MaxPerformance Members: primdb - Primary database stby1 - Physical standby database tstby - Physical standby database (disabled) stby2 - Physical standby database stby3 - Physical standby database Fast-Start Failover: DISABLED Configuration Status: SUCCESS (status updated 27 seconds ago)Finally, enable the database:
DGMGRL> enable database 'tstb'; enable database 'tsbt'; Enabled.The output you should see at the end is:
DGMGRL> show configuration; show configuration; Configuration - dgconfig1 Protection Mode: MaxPerformance Members: primdb - Primary database stby1 - Physical standby database tstby - Physical standby database (receiving current redo) stby2 - Physical standby database stby3 - Physical standby database