In this example, the following members participate in my Data Guard Configuration:
Database Name |
Role |
Open Mode |
Function |
pksprod |
Primary |
OPEN |
Primary database |
pks_stb |
Cascading Physical Standby |
MOUNTED |
Used for failover |
pks_ro |
Active Data Guard |
READ ONLY WITH APPLY |
Used for reporting |
pks_tstb |
Terminal Physical Standby |
MOUNTED |
Used for migration to a new geographical location |
I am using the concept of a "
Terminal Standby Database" to move the database from one geographical location to another.
In order for the cascading database to send its redo log stream to the terminal standby database, I had to configure the Data Guard Broker attribute "redoroutes", like this:
edit database "pksprod" set property redoroutes='(LOCAL : pks_stb, pks_ro ASYNC) (pks_stb : pks_tstb ASYNC)';
edit database "pks_stb" set property redoroutes =' (LOCAL :pksprod ASYNC, pks_ro ASYNC)(pksprod : pks_tstb ASYNC)';
which means
* When pksprod is primary, it shall send redo to pks_stb and pks_ro, while pks_stb shall send its redo to pks_tstb
* When pks_stb is primary, it shall send redo to pksprod and pks_ro, while pksprod shall send its redo to pks_tstb
When done, check the outcome like this:
DGMGRL> show database "pksprod" redoroutes
RedoRoutes = '(LOCAL : pks_stb,pks_ro ASYNC)(pks_stb : pks_tstb ASYNC)'
DGMGRL> show database "pks_stb" redoroutes
RedoRoutes = '(LOCAL : pksprod ASYNC, pks_ro ASYNC)(pksprod : pks_tstb ASYNC)'
The 12.2 documentation for the RedoRoutes attribute can be found
here. You should familarize yourself with the how you can set up the redoroutes to suit your needs.
In my case it was the only way I was able to get the DG configuration to work the way I was intending. It was setup using the 12.2 version of the Oracle database software.