[发明专利]Oracle streams的异常修复系统及方法有效
申请号: | 201710316150.7 | 申请日: | 2017-05-08 |
公开(公告)号: | CN107168822B | 公开(公告)日: | 2020-01-07 |
发明(设计)人: | 张世栋;孔兰菊;吕宁;姜诚;李桂丰 | 申请(专利权)人: | 山大地纬软件股份有限公司 |
主分类号: | G06F11/14 | 分类号: | G06F11/14 |
代理公司: | 11641 北京金宏来专利代理事务所(特殊普通合伙) | 代理人: | 洪玉姬;韩燕 |
地址: | 250000 山东*** | 国省代码: | 山东;37 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | 本发明提供一种Oracle streams的异常修复系统,包括:错误解析模块,检测Oracle streams进程状态,并确定Oracle streams进程是否异常;规则库,对规则进行存储;处理模块,在错误解析模块确定Oracle streams进程是异常进程的情况下从规则库中提取相应规则,并将此相应规则应用到异常进程,对异常进程进行处理。本发明提供的Oracle streams的异常修复系统及方法,可以通过错误解析模块自动检测到Oracle streams异常的进程并通过预先添加到规则库中的规则进行处理,实现了对Oracle streams异常的智能修复及处理。 | ||
搜索关键词: | oraclestreams 异常 修复 系统 方法 | ||
【主权项】:
1.一种Oracle streams的异常修复系统,其特征在于,包括:/n错误解析模块,检测Oracle streams进程状态,并确定Oracle streams进程是否异常;/n规则库,对规则进行存储;/n处理模块,在错误解析模块确定Oracle streams进程是异常进程的情况下从规则库中提取相应规则,并将此相应规则应用到异常进程,对异常进程进行处理;/n所述规则的处理逻辑包括:/n(1)获取出错信息的LCRs消息,LCRs消息包含对数据库的修改信息,包括源数据库信息、操作类型、操作的原始值和操作的新值,LCRs消息包含一个或多个LCR消息;/n(2)按照顺序解析异常LCR消息,获得消息的操作类型,DML操作命令的操作类型一般分为三种,插入、删除、修改操作;/n(3)根据操作类型进行消息的处理,如异常消息为插入操作,若异常原因为主键冲突,则根据原始消息创建新消息,将操作类型转化为删除,获得消息的旧值为当前的值,根据旧值的主键信息将目标端的冲突消息删除,并重新应用原始消息;/n(4)若原始LCR操作类型为修改,错误的原因可能为目标端数据主键字段存在、个别字段不一致或者目标端主键数据不存在;若与目标端数据不一致,则根据LCR消息的原始值,获得消息的主键,根据消息的主键信息删除目标端的数据,根据原始LCR消息创建新的消息,然后将新消息的操作类型修改为插入,将原始LCR消息的旧值作为新消息的新值,执行该新消息进行插入操作,然后执行原始的LCR消息,若目标端数据不存在,则将该LCR消息的操作类型转变为插入,将修改后的消息进行插入操作;/n(5)若原始LCR消息操作类型为删除,错误的原因可能为数据不一致或者目标端数据不存在;数据不一致是LCR消息中的原始数据与目标端的数据存在主键一致但个别字段数据不一致的情况,数据不存在是源端删除的数据在目标端不存在情况;若错误类型为数据不一致,则根据LCR消息的原始值,获得消息的主键,根据消息的主键信息删除目标端的数据,根据原始LCR消息创建新的消息,然后将新消息的操作类型修改为插入,将原始LCR消息的旧值作为新消息的新值,执行该新消息进行插入操作,然后执行原始的LCR消息;若目标端数据不存在,根据原始LCR消息创建新的消息,然后将新消息的操作类型修改为插入,将原始LCR消息的旧值作为新消息的新值,执行该新消息进行插入操作,然后执行原始的LCR消息;/n(6)若数据同步过程中发生的异常为数据库本身运行的异常信息,如表空间不足,资源忙等原因,则使用正则表达式对同步过程中异常信息的报错内容进行截取,获得具体的信息,从而拼接出在目标端需要执行的操作。/n
下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于山大地纬软件股份有限公司,未经山大地纬软件股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/patent/201710316150.7/,转载请声明来源钻瓜专利网。
- 上一篇:数据备份方法及装置
- 下一篇:一种Java进程保护的方法与装置