Pages

Wednesday, February 4, 2026

Golden Gate issue in Oracle 19 - LOGICAL_REPLICATION

Issue
In Oracle 19, a new field was added to
USER_TABLES: logical_replication

In addition to running ADD TRANDATA and having the table supplemental logging, as can be validated in DBA_LOG_GROUPS, the table also must have USER_TABLES.logical_replication set to ENABLED.

When USER_TABLES.logical_replication is set to DISABLED, the Primary Key data is not written to the before and after image in Extract Files.

In this setup,
INSERT and DELETE would work, but UPDATE Transactions are failing to be replicated, and replicat would fail with mapping error

To Fix it, change USER_TABLES.logical_replication to ENABLED, and restart Extract on Source.

Fix
ALTER TABLE USER_A.TABLE_A ENABLE LOGICAL REPLICATION;

Evidences
The Error would be coming in
REPLICAT, as it fails to process the UPDATE Transaction
This error would be coming in Site B replicat logs:

2026-01-30 20:33:11  INFO    OGG-02243  Opened trail file /software/ogg/191/dirdat/01/in/et000000004 at 2026-01-30 20:33:11.076300.
2026-01-30 20:33:11  WARNING OGG-02760  ASSUMETARGETDEFS is ignored because trail file /software/ogg/191/dirdat/01/in/et000000004 contains table definitions.
2026-01-30 20:33:11  INFO    OGG-03506  The source database character set, as determined from the trail file, is UTF-8.
2026-01-30 20:33:11  INFO    OGG-06505  MAP resolved (entry USER_A.TABLE_A): MAP "USER_A"."TABLE_A", TARGET USER_A.TABLE_A.
2026-01-30 20:33:11  INFO    OGG-02756  The definition for table USER_A.TABLE_A is obtained from the trail file.
2026-01-30 20:33:11  INFO    OGG-06511  Using following columns in default map by name: ACTION_ID, ACTION_NAME.
2026-01-30 20:33:11  INFO    OGG-06510  Using the following key columns for target table USER_A.TABLE_A: ACTION_ID.
2026-01-30 20:33:11  WARNING OGG-01431  Aborted grouped transaction on USER_A.TABLE_A, Mapping error.
2026-01-30 20:33:11  WARNING OGG-01003  Repositioning to rba 2571 in seqno 4.
2026-01-30 20:33:11  WARNING OGG-01151  Error mapping from USER_A.TABLE_A to USER_A.TABLE_A.

Source Context :
  SourceModule            : [er.replicat.errors]
  SourceID                : [er/replicat/reperrors.cpp]
  SourceMethod            : [repError]
  SourceLine              : [1810]
  ThreadBacktrace         : [15] elements
                          : [/software/ogg/191/libgglog.so(CMessageContext::AddThreadContext())]
                          : [/software/ogg/191/libgglog.so(CMessageFactory::CreateMessage(CSourceContext*, unsigned int, ...))]
                          : [/software/ogg/191/libgglog.so(_MSG_QualTableName_QualTableName(CSourceContext*, int, ggs::gglib::ggapp::CQualDBObjName<(DBObjType)1> const&, ggs::gglib::ggapp::CQualDBObjName<(DBObjType)1> const&, CMessageFactory::MessageDisposition))]
                          : [/software/ogg/191/replicat(ggs::er::ReplicatContext::repError(short, int, char const*, extr_ptr_def*, ggs::gglib::gglcr::CommonLCR const*, std_rec_hdr_def*, char*, ObjectMetadata*, bool))]
                          : [/software/ogg/191/replicat()]
                          : [/software/ogg/191/replicat(ggs::er::ReplicatContext::processRecord(ggs::gglib::gglcr::CommonLCR const*, ggs::gglib::gglcr::CommonLCR*, extr_ptr_def*&, extr_ptr_def*&, bool&, int&, bool, RepCsn&))]
                          : [/software/ogg/191/replicat(ggs::er::ReplicatContext::processReplicatLoop())]
                          : [/software/ogg/191/replicat(ggs::er::ReplicatContext::run())]
                          : [/software/ogg/191/replicat()]
                          : [/software/ogg/191/replicat(ggs::gglib::MultiThreading::MainThread::ExecMain())]
                          : [/software/ogg/191/replicat(ggs::gglib::MultiThreading::Thread::RunThread(ggs::gglib::MultiThreading::Thread::ThreadArgs*))]
                          : [/software/ogg/191/replicat(ggs::gglib::MultiThreading::MainThread::Run(int, char**))]
                          : [/software/ogg/191/replicat(main)]

                          : [/lib64/libc.so.6(__libc_start_main)]
                          : [/software/ogg/191/replicat()]

2026-01-30 20:33:11  ERROR   OGG-01296  Error mapping from USER_A.TABLE_A to USER_A.TABLE_A.

What to check on SOURCE DB:

SELECT supplemental_log_data_min FROM V$DATABASE;

SUPPLEMENTAL_LOG_DATA_MIN
--------------------------------
YES


SELECT supplemental_log_data_min, 
       supplemental_log_data_pk, 
       supplemental_log_data_ui, 
       supplemental_log_data_all
FROM V$DATABASE;

SUPPLEMENTAL_LOG_DATA_MIN SUPPLEMENTAL_LOG_DATA_PK SUPPLEMENTAL_LOG_DATA_UI SUPPLEMENTAL_LOG_DATA_ALL
------------------------- ------------------------ ------------------------ -------------------------
YES                       NO                       NO                       NO

SELECT log_group_name, 
       table_name, 
       owner, 
       log_group_type, 
       always
  FROM DBA_LOG_GROUPS
 WHERE OWNER = 'USER_A
   AND TABLE_NAME =  'TABLE_A';

LOG_GROUP_NAME   TABLE_NAME  OWNER   LOG_GROUP_TYPE      ALWAYS
---------------- ----------- ------- ------------------- -----------
GGS_119994       TABLE_A     USER_A  USER LOG GROUP      ALWAYS
SYS_C00197420    TABLE_A     USER_A  PRIMARY KEY LOGGING ALWAYS
SYS_C00197421    TABLE_A     USER_A  UNIQUE KEY LOGGING  CONDITIONAL
SYS_C00197422    TABLE_A     USER_A  FOREIGN KEY LOGGING CONDITIONAL
SYS_C00197423    TABLE_A     USER_A  ALL COLUMN LOGGING  ALWAYS



SELECT owner, table_name, logical_replication 
  FROM DBA_TABLES 
 WHERE owner='USER_A' 
  AND table_name='TABLE_A';

OWNER      TABLE_NAME      LOGICAL_REPLICATION
---------- --------------- ---------------------
USER_A     TABLE_A         DISABLED


ALTER TABLE USER_A.TABLE_A ENABLE LOGICAL REPLICATION;

SELECT owner, table_name, logical_replication 
  FROM DBA_TABLES 
 WHERE owner='USER_A' 
  AND table_name='TABLE_A';

OWNER      TABLE_NAME      LOGICAL_REPLICATION
---------- --------------- ---------------------
USER_A     TABLE_A         ENABLED

No comments:

Post a Comment