My Top 5 favorite GoldenGate 21c New Features

GoldenGate 21c was released back in May 2021 and has introduced some very exciting new features, I wanted to share with you my top 5. Although it was a hard decision to pick 5, I felt those below were most relevant based on my experiences with clients’ requests and pain points. I am focusing this post on GoldenGate for Oracle. Also, notice this is a personal opinion and not Oracle Best Practices or recommendations.

#5 Unified Builds

This has always been a little pain. In the past, we had to have an installation of GoldenGate for each database version we were connecting to. 21c has now a “Unified Build” that one single installation can connect to all Oracle databases versions. (11g – 21c).

#4 Auto Capture

We have now the ability to set up table capture at the DDL level (CREATE TABLE or ALTER TABLE). Initially, I was wondering the difference from have “SCHEMATRANDATA” and DDL enabled and this new feature. But after I put some additional thought there are some cases where this can be very helpful, especially when working with ERP systems where there are thousands of tables and users might only want to replicate a sub-set of those tables. This feature requires an Oracle Database 21c at this time.

TRANLOGOPTIONS enable_auto_capture Y

CREATE/ATLER TABLE table_name ENABLE LOGICAL REPLICATION ALLKEYS
or
CREATE/ALTER TABLE table_name ENABLE LOGICAL REPLICATION ALLOWNONVALIDATEDKEYS

#3 Partition and Filtering Capture

PARTITION and PARTITIONEXCLUDE are new TABLE or MAP parameters that can help when we want to replicate just a subset of the table and filter by partition.

PARTITION [container.]schema.table.partition;
PARTITIONEXCLUDE [container.]schema.table.partition;

Examples:
TABLE schema.tab1;
PARTITION schema.tab2.part;

TABLE schema.tab1
PARTITION schema.tab*.part1;
PARTITIONEXCLUDE schema.tab1.part*;

#2 INCLUDETAG Support

This is a feature that a lot of people are still not aware of or have not explored. SETTAG and EXCLUDETAG is an exciting feature very helpful in multi-master or cascade user cases. We can even set up SETTAG at the application level with DBMS_STREAMS.SET_TAG package in addition to the replicat parameter file. INCLUDETAG is additional flexibility for that capabilities. I encourage you to explore the functionality as it can be very helpful in complex replications.

e.g. SET_TAG at application session level:

BEGIN
   DBMS_STREAMS.SET_TAG(
      tag  =>  HEXTORAW('1D'));
END;
/

In the extract parameter we would:

INCLUDETAG 1D

https://docs.oracle.com/en/middleware/goldengate/core/21.1/reference/includetag.html#GUID-EA8B9CAF-55C3-4159-AE1C-9FA29E28F586

#1 Auto CDR

This is definitely my favorite one and it’s probably because I have worked on several bi-direction and multi-master architectures. The feature that was missing with Auto CDR was the ability to resolve the conflict with the “earliest timestamp-based resolution” commit transaction.

Prior to 21c, we could only configure wining conflict by the last committed transaction. That has been resolved with 21c, we can now resolve the conflict for the first committed transaction. I’ve always given an example of an airline seat assignment selection, if two users select the same seat at virtually the same time, you would want the first user that selected to be able to book the seat. This was not available prior to 21c with Auto CDR.

In addition, we can also resolve conflict by site priority. e.g. A transaction from a specific location will always win.

Configuring Earlier Timestamp Conflict Detection and Resolution for a Table

BEGIN
  DBMS_GOLDENGATE_ADM.ADD_AUTO_CDR(
    schema_name => 'hr',
    table_name  => 'emp',
    additional_options => 1);
END;
/

I have an old post that details the Auto CDR feature:

Honorable Mention

I could easily add a few more features to this list, but one notable enhancement that is a HUGE benefit for the user is the Unified WebUI screens. All services tabs are now in one browser page/tab instead of individual tabs for each service.

One comment

Leave a Reply