昨天,一套新建ogg的rep怎么都起不来,查看report只是提示源端的表和目标端的表mapping 有问题。
由于生产系统信息不能取出,凭记忆叙述下。
分别desc,取出两端的表结构,一行一行做比对(源端和目标端列不一致,需要列映射),从列类型到长度以及各种对应变换都没有问题。
记录rep目前的seqno和rba号,跳转2个trial,start之后,表rba正常走,stats该rep下的该表发现只有insert,过一会rep进程又abend。
将rep进程改回原来记录的seqno和rba号,start即abend。
查看discard文件,发现一条该表的update记录,提示是missing key column....
再次检查param的参数配置,参数文件里明确指定了keycol字段,并且目标端该表的主键也确实是所指定的列。
那么在这种情况下,提示丢失主键,并且insert的是没有问题的,而更新出现问题,那应该就是出现的主键上,查看源端的主键果真跟目标端的
主键指定的列不一样。rep的params参数中的keycols字段改为源端的主键列即可正常insert和update。
这个问题主要原因是想当然的以为,源端和目标端的主键是一致的。