我需要使用Goldengate设置从源(Oracle)到目标(BigQuery)的CDC。我只能选择根据特定的列名在replicat端过滤数据。如以下链接所示: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);===================================
导出SOUVIKPOC='Smith‘
但是我的错误不是很明显
2020-02-19 05:47:37 ERROR OGG-01157 Error in WHERE clause for ARADMINPI.TPOC.=============================
我有什么地方做错了吗?
发布于 2020-02-21 08:14:34
要使参数替换起作用,您需要用引号将?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')));除非在运行GGSCI (和执行START MGR)之前设置了SOUVIKPOC环境变量,否则需要在参数文件中添加一条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')));https://stackoverflow.com/questions/60294048
复制相似问题