How to replicate additional column using Goldengate Big Data Adapter?
Date: Tue, 19 Jan 2021 11:39:14 +0000
Message-ID: <BMXPR01MB3832F9ACB09F0D78F8962BE5F0A30_at_BMXPR01MB3832.INDPRD01.PROD.OUTLOOK.COM>
Hello All,
How to replicate additional column using Goldengate Big Data Adapter?
Source Database Version: 12.1.0.2
Source Goldengate Version: 12.2.0.2.2
Target Goldengate Big Data Adapter: 19.1.0.0.5
Target Destination: Solace
Source Table Definition:
SQL> desc XYZ.PCM
Name Null? Type ----------------------------------------- -------- ---------------------------- PAYMENT_CODE NUMBER(10) PAYMENT_DESCRIPTION VARCHAR2(240) TYPE_PG_NAME VARCHAR2(240) GL_CODE NUMBER CATEGORY VARCHAR2(240) STATUS VARCHAR2(240) SETTLEMENT VARCHAR2(240) COMMISSION NUMBER SETTLEMENT_DAYS NUMBER
Replicat Param File:
REPLICAT REPFXMT1
TARGETDB LIBFILE libggjava.so SET property=dirprm/REPFXMT1.props
REPORTCOUNT EVERY 1 MINUTES, RATE
REPLACEBADCHAR SPACE
--MAP XYZ.PCM, TARGET XYZ.PCM;
--MAP XYZ.PCM, TARGET XYZ.PCM , COLMAP(USEDEFAULTS, DBNAME = _at_GETENV ('GGFILEHEADER', 'DBNAME'));
MAP XYZ.PCM, TARGET XYZ.PCM, COLMAP(USEDEFAULTS, STATUS = _at_GETENV ('GGFILEHEADER', 'DBNAME'));
When we try to replicate 9 columns from source to target using “MAP XYZ.PCM, TARGET XYZ.PCM;” clause, it works fine.
However, when we try to replicate addition column using “MAP XYZ.PCM, TARGET XYZ.PCM , COLMAP(USEDEFAULTS, DBNAME1 = _at_GETENV ('GGFILEHEADER', 'DBNAME'));” clause, it fails with below error;
2021-01-18 15:04:38 INFO OGG-15056 The definition for target table XYZ.PCM is derived from the source table XYZ.PCM. ...(USEDEFAULTS, DBNAME1 =...
^
Error in COLMAP clause. Unrecognized clause or element.
Source Context :
SourceModule : [er.mapping] SourceID : [er/mapping.cpp] SourceMethod : [get_map_entry] SourceLine : [3089] ThreadBacktrace : [17] elementsReceived on Tue Jan 19 2021 - 12:39:14 CET
: [/goldengatecu/goldengate/ggsolace/libgglog.so(CMessageContext::AddThreadContext())]
: [/goldengatecu/goldengate/ggsolace/libgglog.so(CMessageFactory::CreateMessage(CSourceContext*, unsigned int, ...))]
: [/goldengatecu/goldengate/ggsolace/libgglog.so(_MSG_String(CSourceContext*, int, char const*, CMessageFactory::MessageDisposition))]
: [/goldengatecu/goldengate/ggsolace/replicat(get_map_entry(ggs::gglib::ggunicode::UString const&, int, wc_def*, ObjectMetadataRequest const&, unsigned int, unsigned int, ggs::gglib::ggmetadata::MetadataContext&, ggs::gglib::ggmetadata::TableManager&, unsigned int, ggs::gglib::ggmetadata::CTblMetadata*, ggs::gglib::ggmetadata::CMetadataReader*, bool, bool, bool))]
: [/goldengatecu/goldengate/ggsolace/replicat(wc_def::resolve_wc_entry(ObjectMetadataRequest const&, int, ggs::gglib::ggapp::CQualDBObjName<(DBObjType)1>*, ggs::gglib::ggmetadata::MetadataContext&, ggs::gglib::ggmetadata::TableManager&, ggs::gglib::ggmetadata::CTblMetadata*, ggs::gglib::ggmetadata::CMetadataReader*))]
: [/goldengatecu/goldengate/ggsolace/replicat(WILDCARD_check_table(ObjectMetadataRequest const&, bool, bool, unsigned int, ggs::gglib::ggapp::CQualDBObjName<(DBObjType)1>*, ggs::gglib::ggmetadata::TableManager&, ggs::gglib::ggmetadata::CTblMetadata*, ggs::gglib::ggmetadata::CMetadataReader*, bool, ggs::gglib::gglcr::CommonLCR*))]
: [/goldengatecu/goldengate/ggsolace/replicat(ggs::er::ERContext::findSourceMetadata(ggs::gglib::ggapp::CQualDBObjName<(DBObjType)1> const&, int, ggs::gglib::ggmetadata::CTblMetadata*, ggs::gglib::ggmetadata::CMetadataReader*, bool))]
: [/goldengatecu/goldengate/ggsolace/replicat(ggs::gglib::ggapp::ReplicationContext::sourceMetadataLookup(ggs::gglib::gglcr::CommonLCR const*))]
: [/goldengatecu/goldengate/ggsolace/replicat(ggs::er::ReplicatContext::processReplicatLoop())]
: [/goldengatecu/goldengate/ggsolace/replicat(ggs::er::ReplicatContext::run())]
: [/goldengatecu/goldengate/ggsolace/replicat()]
: [/goldengatecu/goldengate/ggsolace/replicat(ggs::gglib::MultiThreading::MainThread::ExecMain())]
: [/goldengatecu/goldengate/ggsolace/replicat(ggs::gglib::MultiThreading::Thread::RunThread(ggs::gglib::MultiThreading::Thread::ThreadArgs*))]
: [/goldengatecu/goldengate/ggsolace/replicat(ggs::gglib::MultiThreading::MainThread::Run(int, char**))]
: [/goldengatecu/goldengate/ggsolace/replicat(main)]
: [/lib64/libc.so.6(__libc_start_main)]
: [/goldengatecu/goldengate/ggsolace/replicat()]
2021-01-18 15:04:38 ERROR OGG-00919 Error in COLMAP clause. As a test, we tried to replicate using “MAP XYZ.PCM, TARGET XYZ.PCM, COLMAP(USEDEFAULTS, STATUS = _at_GETENV ('GGFILEHEADER', 'DBNAME'));” clause and it works fine. “Status” is an existing column in source table with VARCHAR2(240) datatype. When this clause is used, the target “Status” column is overwritten with ‘DBNAME’ value. This is not a fix, we just wanted to see whether Goldengate Adapter can replicat token values. The expectation is to replicate 9 columns from source and apply them to target along with additional column with token value. Please suggest how to do this, like is there a way to define this new column datatype to GG Adapter, or something else. Best Regards, Sourav Biswas +91-9650017306 -- http://www.freelists.org/webpage/oracle-l