In this DocumentSolution
Applies to:Oracle GoldenGate - Version: 4.0.0 and later [Release: 4.0.0 and later ]
Information in this document applies to any platform.
SolutionPlease review the GROUPTRANSOPS and MAXTRANSOPS to understand what each individual parameter does.
How does GROUPTRANSOPS work, that is setting only GROUPTRANSOPS?
For example if you have a transaction containing 200 operations, replicat will commit the 200 operations as one transaction. Replicat will always use the application's number of operations on the actual transaction.
The way grouptransops works can be illustrated using this example:
Actual application program transaction in source machine:
25 operations for transaction 1
50 operations for transaction 2
60 operations for transaction 3
If grouptransops = 100, then replicat will commit under one transaction 25 + 50 + 60 operations.
25 < 100 so replicat will collect more transactions.
25 + 50 < 100 so replicat will collect more transactions.
25 + 50 + 60 > 100, replicat now commits.
How do GROUPTRANSOPS and MAXTRANSOPS work together?
Note the behavior is different between the Open Systems and HP NSK.
Open Systems version
The replicat checks the value of maxtransops for each operation it encounters and will commit the transaction when the operation count = MAXTRANSOPS.
Let us look at several examples:
Grouptransops = 100, maxtransops = 1
Using the above example, replicat commits the transaction for every operation.
Grouptransops = 1, maxtransops = 1
Using the above example, replicat commits the transaction at every operation.
Grouptransops = 10, maxtransops = 10
Using the above example, replicat commits the transaction at every 10th operation.
NSK Guardian version
The replicat checks the value of maxtransops for each operation it encounters. If the number of operations is higher than maxtransops it then checks to see the value of grouptransops. If the number of operations is higher than grouptransops then the transaction is committed. This can illustrated with this pseudo code:
if end of transaction OR num of operations >= maxtransops then
if num of operations >= grouptransops then
COMMIT transaction.
Let us look at several examples:
Grouptransops = 100, maxtransops = 1
Using the above example, replicat commits the transaction at the same point (ie 25+50+60).
Grouptransops = 1, maxtransops = 1
Using the above example, replicat commits the transaction at every operation.
Grouptransops = 10, maxtransops = 10
Using the above example, replicat commits the transaction at every 10th operation.
So the recommendation is that if one decides to set maxtransops then it should always have the same value as grouptransops.
MAXTRANSOPS = GROUPTRANSOPS = <value>
Note that setting maxtransops to a value lower than the application maximum transaction size implies the lost of transaction integrity.