Oracle Golden Gate Performance: Parallel Process Groups
For the "Classic" Replicat, there is just one process applying changes. But if the source system is doing lots of DML, this single process can easily be overwhelmed. This is especially true if the source database is a RAC system, and thereby can make changes at a huge rate.
Here's the Problem
For example, on a large RAC system where I work, one of the replicated tables has about 25 million changes applied per hour. The single Replicat process can manage only 6 million changes per hour. As one would expect, we experienced several hours of lag time. It's not a question of the transactions running too slow--they are taking less than 1 ms. The problem is that there is only 1 process.
To solve this problem, we modify GoldenGate configuration and create additional Replicat process groups. In our case, the changes were happening about 4x faster than we could process them, so we modified our setup to have a total of 4 Replicats.
Before the actual addition of Replicat groups, you will need to stop the existing Replicat processes. Then, use the "Add Replicat" command to add additional Replicat processes, based on the existing trail file.
Update the Parameter Files
With multiple Replicat processes, the work will be evenly split. This is achieved via the @Range function. In each parameter file, we add this Range parameter to the Map line:
@Range (Group#, #of Groups)
So, our original Replicat will contain @Range(1,4), and the other (new) Replicat parameter files will contain
@Range(2,4), @Range(3,4), and @Range(4,4)
After the parameter files are updated, you will, of course, need to start all the Replicat processes. First, however, there is a detail that must be considered.
Specify Starting Point
After creating a new Replicat, we must tell it where it should start. After all, it is brand new. Here are the steps:
- Use the info detail command to glean information on the existing Replicat
- Alter the new Replicat process and provide the extseqno and extrba values.
- Start all the Replicat processes.
Checking the Final Configuration
Here is what our setup looked like with 4 Replicat process groups:
After we added the extra Replicat process groups, our ability to process transactions went up as expected. This is a good way to solve a performance bottleneck, but you must exercise great care in changing the parameter files.