Фильтровать данные в Oracle Goldengate Replicat Side - PullRequest
1 голос
/ 19 февраля 2020

У меня есть требование установить CD C из Source (Oracle) в Target (BigQuery) с помощью Goldengate. У меня может быть только опция фильтрации данных на стороне репликации на основе имени столбца Specifi c. По приведенной ниже ссылке: https://docs.oracle.com/en/cloud/paas/goldengate-cloud/gwuad/using-oracle-goldengate-parameter-files.html#GUID -7F405A81-B2D1-4072-B254-DC2B0EC56FBA

Я настроил репликат, как показано ниже

REPLICAT RPOC
TARGETDB LIBFILE libggjava.so SET property=dirprm/bqpoc.props
SOURCEDEFS /app/oracle/ogg_bigdata/dirdef/poc.def
REPORTCOUNT EVERY 1 MINUTES, RATE
GROUPTRANSOPS 500

MAP ARADMINPI.TPOC, TARGET PRD.TPOCFL,KEYCOLS(ID),WHERE (NAME= ?SOUVIKPOC);

=== =======================================

export SOUVIKPOC = 'Smith'

Но я получаю ниже ошибку

2020-02-19 05:47:37  ERROR   OGG-01157  Error in WHERE clause for ARADMINPI.TPOC.

============================

Есть ли что-то, что я делаю здесь не так?

1 Ответ

0 голосов
/ 21 февраля 2020

Чтобы смена параметров работала, вам нужно заключить в кавычки ?SOUVIKPOC, например:

MAP ARADMINPI.TPOC, TARGET PRD.TPOCFL,KEYCOLS(ID),WHERE (NAME= '?SOUVIKPOC');

В файле отчета также должна быть дополнительная информация о сбое ранее.

Другой пример использования @GETENV

Другой вариант - использовать функцию @GETENV вместо подстановки параметров. Здесь оператор MAP использует предложение FILTER вместо предложения WHERE:

MAP ARADMINPI.TPOC, TARGET PRD.TPOCFL,KEYCOLS(ID),
    FILTER (@STREQ(NAME, @GETENV('OSVARIABLE', 'SOUVIKPOC')));

Если вы не задали переменную среды SOUVIKPOC до запуска GGSCI (и выполнения START MGR), вам нужно добавить оператор SETENV в файл параметров:

SETENV (SOUVIKPOC = 'Smith')

Собрать все вместе:

REPLICAT RPOC
TARGETDB LIBFILE libggjava.so SET property=dirprm/bqpoc.props
SOURCEDEFS /app/oracle/ogg_bigdata/dirdef/poc.def
REPORTCOUNT EVERY 1 MINUTES, RATE
GROUPTRANSOPS 500

SETENV (SOUVIKPOC = 'Smith')
MAP ARADMINPI.TPOC, TARGET PRD.TPOCFL,KEYCOLS(ID),
    FILTER (@STREQ(NAME, @GETENV('OSVARIABLE', 'SOUVIKPOC')));
...