代码改变世界

OGG主从表结构不同步,出现OGG-01296错误

2019-09-10 17:00  williamzheng  阅读(3749)  评论(0编辑  收藏  举报

一、Cause

ogg的err日志出现以下报错

2019-09-10 16:36:55  WARNING OGG-01003  Oracle GoldenGate Delivery for Oracle, repwh2.prm:  Repositioning to rba 1720271212 in seqno 1521.
2019-09-10 16:36:55  ERROR   OGG-01296  Oracle GoldenGate Delivery for Oracle, repwh2.prm:  Error mapping from UPCENTER.FUND_BOND_INVEST_PORT_NEW to UPCENTER.FUND_BOND_INVEST_PORT_NEW.
2019-09-10 16:36:55  ERROR   OGG-01668  Oracle GoldenGate Delivery for Oracle, repwh2.prm:  PROCESS ABENDING.

ogg里面查看进程报错如下:

GGSCI (ogg2) 2> view param repwh2
#### 省略部分内容 ####
2019-09-10 16:14:43  WARNING OGG-01004  Aborted grouped transaction on 'UPCENTER.FUND_BOND_INVEST_PORT_NEW', Database error 1403 (OCI Error ORA-01403: no data found, SQL <UPDATE "UPCENTER"."FUND_BOND_INVEST_PORT_NEW" SET "ISVALID" = :a0,"UPDATETIME" = :a1 WHERE "FUND_ID
" = :b0 AND "END_DATE" = :b1 AND "IF_CONV_PAR" = :b2 AND "BOND_CODE" = :b3 AND "BOND_NAME" = :b4>).

2019-09-10 16:14:43  WARNING OGG-01003  Repositioning to rba 1720271212 in seqno 1521.

2019-09-10 16:14:43  WARNING OGG-01154  SQL error 1403 mapping UPCENTER.FUND_BOND_INVEST_PORT_NEW to UPCENTER.FUND_BOND_INVEST_PORT_NEW OCI Error ORA-01403: no data found, SQL <UPDATE "UPCENTER"."FUND_BOND_INVEST_PORT_NEW" SET "ISVALID" = :a0,"UPDATETIME" = :a1 WHERE "F
UND_ID" = :b0 AND "END_DATE" = :b1 AND "IF_CONV_PAR" = :b2 AND "BOND_CODE" = :b3 AND "BOND_NAME" = :b4>.

由于表没有添加主键或修改主键或者没有添加补充日志或者导入大量clob字段等等原因,在ogg日志里看到有表同步报错,此时需要在ogg源端里过滤不同步的表,然后解决掉问题或者手工同步表到目标端,再在目标端里取消过滤

二、解决办法

以下步骤中停止启动ogg进程不是必须步骤,请根据实际业务情况来

2.1先停止主和从的ogg进程

stop repwh2

2.2过滤不同步的表

GGSCI (ogg2) 2> edit params repwh2
replicat repwh2
ASSUMETARGETDEFS
dynamicresolution
ALLOWNOOPUPDATES
userid ggs,password mEkxcl9DN
discardfile /u01/gglog/repwh_discard.txt,append,megabytes 500
DDL INCLUDE ALL
DDLERROR DEFAULT IGNORE RETRYOP
TABLEEXCLUDE UPCENTER.HK_SSTEN_DEAL1
TABLEEXCLUDE UPCENTER.STK_INDU_NAME_TEMP    #过滤不同步的表,重启进程
map upcenter.*,target upcenter.*;
GGSCI (ogg2) 2> start repwh2

2.3将主库的数据导入到从库

源端导出

expdp 用户名/密码 dumpfile=FUND_RETRUN_RANK.dump tables=FUND_RETRUN_RANK logfile=FUND_RETRUN_RANK.log directory=tong PARALLEL=8

目标端导入

impdp 用户名/密码 tables=FUND_RETRUN_RANK dumpfile=FUND_RETRUN_RANK.dump directory=tong logfile=FUND_RETRUN_RANK.log TABLE_EXISTS_ACTION=REPLACE

2.4在从库OGG进程放行过滤的表

GGSCI (ogg2) 2> edit params repwh2
replicat repwh2
ASSUMETARGETDEFS
dynamicresolution
ALLOWNOOPUPDATES
userid ggs,password mEkxcl9DN
discardfile /u01/gglog/repwh_discard.txt,append,megabytes 500
DDL INCLUDE ALL
DDLERROR DEFAULT IGNORE RETRYOP
TABLEEXCLUDE UPCENTER.HK_SSTEN_DEAL1
TABLEEXCLUDE UPCENTER.STK_INDU_NAME_TEMP    #将这行去掉
map upcenter.*,target upcenter.*;

2.5启动主和从的ogg进程

GGSCI (ogg2) 2> start repwh2