有时候生产库可能出现错误操作,那么我们使用Goldengate同步过来的数据也将是错误的,如果目标库不要求实时性,那么我们可以使用延迟参数使目标库延迟应用。这样我们就可以保护错误操作之前的数据
APPLIES TO:
Oracle GoldenGate - Version 10.4.0.0 and later
Information in this document applies to any platform.
GOAL
How to add a DELAY in the application of transactions when using Oracle GoldenGate?
SOLUTION
The following are the options available for delaying the application of transactions on the target.
Option 1: ( Recommended )
You could use the DEFERAPPLYINTERVAL parameter to to set an amount of time that Replicat waits before applying captured transactions to the target database.
Default 0 (no delay)
Syntax [DEFERAPPLYINTERVAL <n><unit>]
<n> is a numeric value for the amount of time to
delay. Minimum is set by the EOFDELAY parameter.
Maximum is seven days.
<unit> can be:
S | SEC | SECS | SECOND | SECONDS | MIN | MINS | MINUTE | MINUTES | HOUR | HOURS | DAY | DAYS
This example directs Replicat to wait 2 hours before posting its transactions.
DEFERAPPLYINTERVAL 2HOURS
Option 2:
You can also look at the use of EOFDELAY in the replicat. When the replicat positions to trail EOF, then you could have the replicat wait for 600 seconds or 10 minutes before doing more work.
This example directs Replicat to wait 600 seconds when the replicate positions to the trail EOF.
EOFDELAY 600
The eofdelay suspends the replicat checking the trail. While DEFERAPPLYINTERVAL causes the replicat to suspend applying the data read from the trail. So former introduces the delay in reading while latter introduces the delay while applying.
|
for Example:
GGSCI (zbdba2) 1> view param rep1
REPLICAT rep1
ASSUMETARGETDEFS
USERID ogg, PASSWORD ogg
discardfile ./dirdat/rep1_discard.txt,append,megabytes 5
DDL INCLUDE MAPPED
DDLOPTIONS REPORT
DBOPTIONS DEFERREFCONST
DBOPTIONS LOBWRITESIZE 102400
DEFERAPPLYINTERVAL 2MIN
HANDLECOLLISIONS
DDLERROR DEFAULT DISCARD RETRYOP MAXRETRIES 5 RETRYDELAY 20
--grouptransops 1
--maxtransops 1
APPLYNOOPUPDATES
MAP zbdba.*,TARGET zbdba.*;