WARNING OGG-01154 Oracle GoldenGate Delivery for Oracle, rep1.prm: SQL error 1403 mapping YYYYY.TABLE_CUR to YYYYY.TABLE_CUR OCI Error ORA-01403: no data found, SQL <UPDATE "YYYYY"."TABLE_CUR" SET "LOGOUT_TIME" = :a1 WHERE "USER_ID" = :b0>.
WARNING OGG-01003 Oracle GoldenGate Delivery for Oracle, rep1.prm: Repositioning to rba 95422336 in seqno 1.
ERROR OGG-01296 Oracle GoldenGate Delivery for Oracle, rep1.prm: Error mapping from YYYYY.TABLE_CUR to YYYYY.TABLE_CUR.
gg中的1403造成的原因:
1、两端表结构不一致
使用desc检查两端的表结构,如果没有配置DDL,是非常有可能的
解决方法是:重新初始化
2、附加日志错误
在源端没有对这张表显示增加补充日志,也会报这个错误
info trandata schema.objectname
检查该对象的trandata是否enable,若为diable则需要先增加附加日志,然后再初始化该表
3、初始化方法错误导致不一致
4、目标端级联删除、trigger没有被禁止
select 'alter table '||owner||'.'||table_name||' disableconstraint '||constraint_name||';'
from dba_constraints
where constraint_type in ('R') and
owner in('YYYYY')
order by status,owner;
select 'alter trigger '||owner||'.'||trigger_name||' disable;'
from dba_triggers
where owner in('YYYYY')
order by status,owner;
执行查询出来的语句
5、该表存在不写日志的DML操作
检查该表是否为force logging
根据以上报错:
1、检查是否添加补充日志
GGSCI (ecardpdb3) 4> dblogin userid ogg, password oggrep
Successfully logged into database.
GGSCI (ecardpdb3) 5> INFO TRANDATA YYYYY.TABLE_CUR
Logging of supplemental redo log data is enabled for table YYYYY.TABLE_CUR.
Columns supplementally logged for table YYYYY.TABLE_CUR: USER_ID.
2、检查discardfile
more /oracle/ogg/discards
Oracle GoldenGate Delivery for Oracle process started, group REP1 discard file opened: 2014-12-23 20:33:32
Key column NAME (1) is missing from delete on table YYYYY.TABLE_CUR
Missing 1 key columns in delete for table YYYYY.TABLE_CUR.
Current time: 2014-12-24 00:50:53
Discarded record from action ABEND on error 0
Aborting transaction on /oracle/oggrep/dirdat/lr beginning at seqno 3 rba 1404
error at seqno 3 rba 1404
Problem replicating YYYYY.TABLE_CUR to YYYYY.TABLE_CUR
Mapping problem with delete record (target format)...
*
ID = NULL
*
Process Abending : 2014-12-24 00:50:53
3、确定出是在ID=NULL这一行出现了问题,检查ogg两端的对应表的两端的满足该条件的记录的区别
最安全的解决办法就是重新初始化,当然如果对于个别的数据出入我们可以选择跳过部分数据,然后根据源端和目标端结合discardfile来手动修改数据源,以及配合handlecollision参数来解决等。
WARNING OGG-01003 Oracle GoldenGate Delivery for Oracle, rep1.prm: Repositioning to rba 95422336 in seqno 1.
ERROR OGG-01296 Oracle GoldenGate Delivery for Oracle, rep1.prm: Error mapping from YYYYY.TABLE_CUR to YYYYY.TABLE_CUR.
gg中的1403造成的原因:
1、两端表结构不一致
使用desc检查两端的表结构,如果没有配置DDL,是非常有可能的
解决方法是:重新初始化
2、附加日志错误
在源端没有对这张表显示增加补充日志,也会报这个错误
info trandata schema.objectname
检查该对象的trandata是否enable,若为diable则需要先增加附加日志,然后再初始化该表
3、初始化方法错误导致不一致
4、目标端级联删除、trigger没有被禁止
select 'alter table '||owner||'.'||table_name||' disableconstraint '||constraint_name||';'
from dba_constraints
where constraint_type in ('R') and
owner in('YYYYY')
order by status,owner;
select 'alter trigger '||owner||'.'||trigger_name||' disable;'
from dba_triggers
where owner in('YYYYY')
order by status,owner;
执行查询出来的语句
5、该表存在不写日志的DML操作
检查该表是否为force logging
根据以上报错:
1、检查是否添加补充日志
GGSCI (ecardpdb3) 4> dblogin userid ogg, password oggrep
Successfully logged into database.
GGSCI (ecardpdb3) 5> INFO TRANDATA YYYYY.TABLE_CUR
Logging of supplemental redo log data is enabled for table YYYYY.TABLE_CUR.
Columns supplementally logged for table YYYYY.TABLE_CUR: USER_ID.
2、检查discardfile
more /oracle/ogg/discards
Oracle GoldenGate Delivery for Oracle process started, group REP1 discard file opened: 2014-12-23 20:33:32
Key column NAME (1) is missing from delete on table YYYYY.TABLE_CUR
Missing 1 key columns in delete for table YYYYY.TABLE_CUR.
Current time: 2014-12-24 00:50:53
Discarded record from action ABEND on error 0
Aborting transaction on /oracle/oggrep/dirdat/lr beginning at seqno 3 rba 1404
error at seqno 3 rba 1404
Problem replicating YYYYY.TABLE_CUR to YYYYY.TABLE_CUR
Mapping problem with delete record (target format)...
*
ID = NULL
*
Process Abending : 2014-12-24 00:50:53
3、确定出是在ID=NULL这一行出现了问题,检查ogg两端的对应表的两端的满足该条件的记录的区别
最安全的解决办法就是重新初始化,当然如果对于个别的数据出入我们可以选择跳过部分数据,然后根据源端和目标端结合discardfile来手动修改数据源,以及配合handlecollision参数来解决等。