I have three standby databases db01 located in HQ, db02 located in DR, db03 located in DR and it should be late standby with delay 15 days.
My task is to configure the following standby architecture:
When db01 is primary it should send logs in SYNC mode to db02 and at the same time db02 should send logs in ASYNC mode to db03.
When db02 is in primary role it should send logs in SYNC mode to db01 and at the same time db01 should send logs in ASYNC mode to db03.
So db01 and db02 database should be in sync mode with real-time apply and db03 should be late standby with delay 15 days and it should receive logs from standby database in ASYNC mode.
I have underlined the above sentence, because for now this cannot be achieved with cascading standby. Read bellow…
I have found very useful documentation so here is the link: http://www.oracle.com/technetwork/database/availability/broker-12c-transport-config-2082184.pdf
It introduces data broker new feature that is available in 12c. Property RedoRoutes.
So in my broker configuration I will set RedoRoutes property by the following way:
DGMGRL> show configuration
Configuration – DB_HQ_DR
Protection Mode: MaxPerformance
Members:
db01 – Primary database
db02 – Physical standby database
db03- Physical standby database
Fast-Start Failover: DISABLED
Configuration Status:
SUCCESS
DGMGRL> DGMGRL> edit database ‘db01′ set property RedoRoutes='(LOCAL:db02)(db02:db03)’;
Property “redoroutes” updated
DGMGRL> edit database ‘db02′ set property RedoRoutes='(LOCAL:db01)(db01:db03)’;
Property “redoroutes” updated
Normally, delayed apply can be configured by property DelayMins:
DGMGRL> edit database ‘db03′ set property DelayMins=’21600’;
Property “delaymins” updated
21600 is 15 days.
BUT, I must tell you a bad news: according to this article https://docs.oracle.com/database/121/SBYDB/log_arch_dest_param.htm#SBYDB01105
“The DELAY
value that a cascaded standby uses is the value that was set for the LOG_ARCHIVE_DEST_
n
parameter on the primary that shipped the redo to the cascading standby.”
So I cannot have the following architecture:
db01 —-real_time_apply—-db02—-delayed_apply—–db03
because db03 will take delay parameter from db02 that is no delay.
Async/Sync mode can be configured by property LogXptMode:
DGMGRL> edit database ‘db01′ set property LogXptMode=’SYNC’;
DGMGRL> edit database ‘db02′ set property LogXptMode=’SYNC’;
DGMGRL> edit database ‘db03′ set property LogXptMode=’ASYNC’;
If I want to achieve my goal I should not use cascading standby but primary must be the sender for db02(with DelayMins=0) and db03(with DelayMins=21600)
I hope it helps.