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为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为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表的唯一键错误。)
解决方法及技巧
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 |
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 |
附件一(《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表的唯一键错误。)
相关文章推荐
- 解决windows下APACHE服务无法正常启动问题
- 对于酷派手机无法打印log问题解决方法
- 解决Android 2.3模拟器中无法同步Google账号的问题
- IIS6.0配置正常,但是显示“网页无法访问”,Httperr.log中显示全是“Connections_refused”,问题总结
- 基于WEB服务器导致消息中心各组件之间无法正常工作的问题分析与解决
- 解决wordpress robots.txt无法正常访问的问题
- 关于解决iReport4.1.1无法正常启动或者闪退或者JDK8不兼容的问题
- 解决在CentOS6.5下安装OpenStack(Icehouse版本 )出现的glance服务无法正常工作的问题
- SL - 摘录 - 解决PasswordBox的Password无法正常绑定的问题
- WIN7下解决因为Windows Time服务无法启动而造成的时间无法同步问题
- [转载]使用EasyRTMP推送RTMP流flash播放器无法正常播放的问题解决
- Android ScrollView嵌套ViewPager滑动失效和无法正常滑动冲突问题解决方案
- [Linux问题解决] tomcat 启动正常,局域网无法访问
- [No0000114]远程桌面剪贴板无法同步本机,无法复制粘贴问题解决
- 解决Jackson的jar包导入,程序无法正常运行问题
- 一次权限修改导致的RAC无法正常启动的问题的解决
- 解决Eclipse无法正常编译的问题
- 解决用C#操作mysql数据库出错无法回滚的问题
- extjs ajax 异步请求正常同步请求出错问题的可能原因
- Ubuntu 8.04无法正常关机问题解决