您的位置:首页 > 运维架构

Oplog出错无法正常同步CQ Multisite问题解决

2009-10-13 13:46 489 查看
OPLOG严重错误,造成CQMS无法同步
解决方法及技巧
Oplog记录了CQMS的步骤信息及增量内容,对CQMS来说是非常重要的。而oplog的号码错误或者丢失,都会造成CQMS无法正常进行。根据IBM的帮助及整理,特将此次错误的解决方法及技巧跟大家进行分享。

1、 问题描述
CQMS的日志监控程序出错,信息如下:
200812291303 msimportauto.bat[2328] Multiutil: 错误:“TEST”数据库已通过 oplog 标识 1067860,导出源自“SZ”的 oplog 条目。下一个要导出的 oplog 标识为 1067862;它应当为 1067861。oplog 条目中存在间隔可能表示丢失了 oplog 条目。
200812291303 msimportauto.bat[2328] Multiutil: syncreplica -export 命令失败。
进入数据库后查看,oplog的确缺少了1067861字段的值。造成NY站点无法将信息传输给WS及LA站点,但其他两站点对NY站点传送数据没有影响。

查询“select * from ratl_oplog t”表内数据查看,错误内容如下表:发现红色部分Epoch_no字段跳了一个“1067861”号,因此报错。

SERIAL_NO
REPLAY_TIME
REPLICA_TIME
REPLICA_ID
EPOCH_NO
SCHEMA_ID
SCHEMA_REV
SCHEMAREV_VERSION
TYPE
PACKLET_LEN
1222922
2008-12-29 AM 05:01:30
2008-12-29 AM 05:01:30
16777413
1067858
27
119
0
1
1684
1222923
2008-12-29 AM 05:01:30
 
16783320
0
0
0
0
4
0
1222924
2008-12-29 AM 05:01:32
2008-12-29 AM 05:01:32
16777413
1067859
27
119
0
1
475
1222925
2008-12-29 AM 05:01:42
2008-12-29 AM 05:01:42
16777413
1067860
27
119
0
10
191
1222926
2008-12-29 AM 05:01:49
2008-12-29 AM 05:01:49
16777413
1067862
27
119
0
1
547
1222927
2008-12-29 AM 05:01:50
2008-12-29 AM 05:01:49
16777413
1067863
27
119
0
1
556
(表一)错误数据库表(serial_no为key)

2、 解决方法
a) DB中,在缺少的oplog前后查找一个EPOCH_NO为0(EPOCH为0时代表此条记录有问题,但不影响系统),且尽量PACKLET_LEN也为0的记录。将此记录值删除,并调整缺少值的前后的记录的serial_no,空出一个值给缺少的内容进行插入准备。经查看表一内容,serial_no是122923是最靠近错误处的值。因此使用下面命令对数据库表进行更新调整。
delete from ratl_oplog where serial_no=1222923;
update ratl_oplog set serial_no=1222923 where serial_no=1222924;
update ratl_oplog set serial_no=1222924 where serial_no=1222925;
insert into ratl_oplog (serial_no, replica_id, epoch_no, schema_id, schema_rev, schemarev_version, type, replay_time, replica_time, packlet_len) values (1222925,16777413,1067861,27,119,0,1,'2008-12-29 05:01:43', NULL, 513);
insert_file binary C:/temp oplog_fixed1.txt update ratl_oplog set packlet=? where serial_no=1222925;
commit;
注意,插入的红色部分就是补充的1067861的内容,内容应该根据错误信息上下记录的值进行编写。

b) 注意插入的PACKLET_LEN必须是后面PACKLET的长度,而且PACKLET内不能包含history表的值,因为可能造成history表唯一键错误。
(注意:上两步等于创建了一条记录,将其加入到oplog中使其完整。)
PACKLET内一般是记录了错做内容,如用户做的动作、记录历史表等操作,根据PACKLET内容在其他站点进行重放。因此,丢失的内容可能不容易查找,所以需要寻找一个“修改”型动作的操作,方面重放及避免错误。
Insert_file是将“C:/temp/oplog_fixed1.txt”文件的内容插入到一个CLOB内容当中。而此内容就是PACKLET记录的内容。详细信息请查看附件一。

c) 降低主站点的对其他站点的预估值,并再次同步即可。
正常后的值请查看下面表二内容。

SERIAL_NO
REPLAY_TIME
REPLICA_TIME
REPLICA_ID
EPOCH_NO
SCHEMA_ID
SCHEMA_REV
SCHEMAREV_VERSION
TYPE
PACKLET_LEN
1222922
2008-12-29 AM 05:01:30
2008-12-29 AM 05:01:30
16777413
1067858
27
119
0
1
1684
1222923
2008-12-29 AM 05:01:32
2008-12-29 AM 05:01:32
16777413
1067859
27
119
0
1
475
1222924
2008-12-29 AM 05:01:42
2008-12-29 AM 05:01:42
16777413
1067860
27
119
0
10
191
1222925
2008-12-29 AM 05:01:43
 
16777413
1067861
27
119
0
10
513
1222926
2008-12-29 AM 05:01:49
2008-12-29 AM 05:01:49
16777413
1067862
27
119
0
1
547
1222927
2008-12-29 AM 05:01:50
2008-12-29 AM 05:01:49
16777413
1067863
27
119
0
1
556
(表一)调整后的数据库表(serial_no为key)

附件一(《oplog_fixed1.txt》文件内容):
format=6
codePage=1;936

<an ti="2008-12-29 04:58:16" an="修改">
<rd op="PACKLET_OP_MOD" en="pir" ye="2.547266" xe="1.220">
<sl vn="8" ye="2.547266">
<sf ve="添加附件" xf="1.763"/>
<sf ve=" ==== State: 已验收 by: YANGXIAOBING001 on 29 December 2008 12:58:15 ==== 添加附件 ==== State: 已纳入版本计划 by: YANGXIAOBING001 on 26 December 2008 18:14:52 ==== 拆任务 " xf="1.764"/>
<sf ve="9" xf="1.263"/>
</sl></rd></an>

(注:附件一的内容就是PACKLET重现了一个“修改”动作增加了一个附件,而不存在记录history表的值。此内容可正确正常使用。)

附件二(《oplog_fixed_err.txt》文件内容):
format=6
codePage=1;936

<an ti="2008-12-29 04:58:16" an="修改">
<rd op="PACKLET_OP_MOD" en="pir" ye="2.547266" xe="1.220">
<sl vn="8" ye="2.547266">
<sf ve="添加附件" xf="1.763"/>
<sf ve=" ==== State: 已验收 by: YANGXIAOBING001 on 29 December 2008 12:58:15 ==== 添加附件 ==== State: 已纳入版本计划 by: YANGXIAOBING001 on 26 December 2008 18:14:52 ==== 拆任务 " xf="1.764"/>
<sf ve="9" xf="1.263"/>
</sl><jf ev="生产缺陷修复" yi="2.1774111" at="2" os="已验收" ns="已验收" ti="2008-12-29 12:58:25" un="YANGXIAOBING001" an="修改" t="history"/>
</rd></an>

(注:附件二的内容就是PACKLET重现了一个“修改”动作增加了一个附件,而存在记录history表的红色值。此内容将无法使用,虽然主站点可以正常导出,但在副站点导入的时候,会报history表的唯一键错误。)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: