When using GoldenGate there are few rules which need to be followed, and a very small number of unsupported datatypes. This is the excerpt from the GoldenGate 12.2 manual:
1.6.10 Non-Supported Oracle Data Types Oracle GoldenGate does not support the following data types. ANYDATA fetch-based column support for data types with VARRAYS that do not include named collections and VARRAYS embedded within those data types ANYDATASET ANYTYPE BFILE MLSLABEL ORDDICOM REFs TIMEZONE_ABBR URITYPE UDT with containing an unsupported Oracle Data Type Oracle GoldenGate does not support replication of identity column data or Valid Time Temporal column data.
One of those may be more common that you think – the last bullet point is the Oracle 12C datatype IDENTITY. The following code snippet is not supported for replication by GoldenGate
create table with_identity ( COL_ID number(38) generated always as identity minvalue 1 not null enable, text_info varchar2(10), constraint with_identity_pk primary key (COL_ID) ); insert into with_identity (text_info) values ('Row 1'); commit; desc with_identity Name Null? Type ----------------------------- -------- -------------------- COL_ID NOT NULL NUMBER(38) TEXT_INFO VARCHAR2(10)
You can see that it is an identity column in user_tab_columns:
select TABLE_NAME,COLUMN_NAME,IDENTITY_COLUMN from user_tab_columns where table_name = 'WITH_IDENTITY'; TABLE_NAME COLUMN_NAME IDE ------------------------------ ------------------------------ --- WITH_IDENTITY COL_ID YES WITH_IDENTITY TEXT_INFO NO
So, how does GoldenGate alert you to the fact that it will not be replicating this table with an unsupported type? It doesn’t.
look in ggserr.log – nothing
look in the extract report file for wildcard matching the table – nothing
With a table containing an unsupported data type, the lack of replication is silent because GoldenGate is completely ignoring the object. Completely Silently.
So, how could I have picked this up before it became a problem?
Obviously I need to run the script in MOS article 1296168.1, which analyzes your schema for GoldenGate compatiblity. Unfortunately, Oracle have not updated this to account for IDENTITY columns, so there is no indication that it does not work!
The script to run is the GoldenGate Integrated Extract Healthcheck script, found in MOS article 1448324.1
Finally some vague and unclear indication that we may have a problem. Part way through the report we get this:
++ TABLES SUPPORT BY GOLDENGATE Integrated Capture ++ Lists tables that can not be supported by OGG (NONE) Lists table that are supported via OGG FETCH (ID KEY) Owner OBJECT_NAME SUPPOR Container ID C##GOLDENGATE AQ$_OGG$Q_TAB_E_HR_C NONE 1 C##GOLDENGATE AQ$_OGG$Q_TAB_E_HR_D NONE 1 C##GOLDENGATE OGG$Q_TAB_E_HR NONE 1 HR WITH_IDENTITY ID KEY 3 IX AQ$_ORDERS_QUEUETABLE_G NONE 3
Wow.
Always take care with GoldenGate – it’s not just a plug-in solution. You need to think about the implementaiton and work with the application to get the best outcomes.
Filed under: Administration, Goldengate Tagged: ggserr.log, goldengate, identity, problem, unsupported
