【技术实现步骤摘要】
一种查询建表数据实时同步方法和装置
[0001]本专利技术涉及数据库同步
,特别是涉及一种查询建表数据实时同步方法和装置。
技术介绍
[0002]目前,在基于日志解析的异构数据库数据实时同步中,同步DDL(Data Definition Language,数据定义语言)操作时,主要有两种技术手段,一种是基于数据库的事件触发器,捕获DDL同步事件,然后基于捕获的同步事件进行解析分析完成同步;另一种是无触发器模式,基于数据库系统表的操作解析,进行DDL操作逆向还原来完成同步。无触发器模式不需要在源端数据库系统建立事件触发器,对源端数据库系统无侵入性,因此得到更广泛应用。
[0003]查询建表操作是一类较为特殊的DDL同步操作,因为其在进行建表操作后,会进行表数据的插入操作,既包含有DDL操作又包含DML(Data Manipulation Language,数据操纵语言)操作。目前Oracle源端数据库基于无触发器模式同步查询建表操作时,按照日志流的顺序,数据库中系统表的操作是在同步表的插入操作之后进行,因此在进行同步时,捕获到插入操作后,不能通过系统表的增量操作获取表字典信息,其中,系统表如sys.col$、sys.tab$等,所以此时不能将插入操作同步到目标端,只能缓存在内存或本地磁盘,待插入操作解析完成后,继续捕获解析系统表操作,得到表字典,然后读取缓存的插入操作数据,完成建表及插入操作同步。上述Oracle源端同步查询建表的方法中,由于需要将同步表插入操作全部进行缓存,当同步表数据量较大时,源端需要 ...
【技术保护点】
【技术特征摘要】
1.一种查询建表数据实时同步方法,其特征在于,所述查询建表数据实时同步方法包括:源端从日志流中捕获解析到查询建表操作的插入操作后,继续捕获解析所述查询建表操作相应的系统表操作,缓存所述系统表操作;源端捕获解析到查询建表操作的提交操作后,根据已缓存的系统表操作,逆向还原出同步表表结构的字典信息,根据所述字典信息生成同步表的离线字典文件;源端从数据库抽取所述同步表的全量同步信息,将所述全量同步信息发送至目标端,以便于所述目标端根据所述全量同步信息生成相应的同步表;源端捕获解析所述同步表的增量操作,根据所述离线字典文件和所述增量操作生成增量同步消息,将所述增量同步消息发送目标端,以便于所述增量同步消息更新相应的同步表。2.根据权利要求1所述的查询建表数据实时同步方法,其特征在于,所述源端从日志流中捕获解析到查询建表操作的插入操作前,若源端从日志流中捕获到系统表操作后继续捕获到同步表的插入操作,则识别所述系统表操作和所述插入操作为查询建表操作,且在解析到第一个所述插入操作后,设置所述第一标记,用于在内存中记录是否已识别查询建表操作;其中,所述系统表操作为所述查询建表操作所对应的系统表的增量操作;源端继续解析后续的插入操作,若所述插入操作对应的第一标记已设置,则丢弃所述插入操作。3.根据权利要求1所述的查询建表数据实时同步方法,其特征在于,设置发送开始标记,用于通知目标端此时源端已开始发送所述全量同步信息;设置发送结束标记,用于通知目标端此时源端已完成发送所述全量同步信息;所述源端从数据库抽取所述同步表的全量同步信息,将所述全量同步信息发送至目标端,以便于所述目标端根据所述全量同步信息生成相应的同步表包括:生成所述离线字典文件后,将所述发送开始标记发送至目标端;将所述发送开始标记发送至目标端后,从数据库抽取所述全量同步信息;设置起始SCN,所述起始SCN的值为从数据库抽取所述全量同步信息前的SCN值,以便于目标端判断是否丢弃所述增量同步消息,将所述起始SCN发送目标端;从数据库抽取所述全量同步信息后,将所述全量同步信息发送至目标端;将所述全量同步信息发送至目标端后,将所述发送结束标记发送至目标端。4.根据权利要求3所述的查询建表数据实时同步方法,其特征在于,所述源端捕获解析所述同步表的增量操作,根据所述离线字典文件和所述增量操作生成增量同步消息,将所述增量同步消息发送目标端包括:捕获解析所述增量操作,判断所述增量操作的操作类型;若所述增量操作为DDL操作,则根据所述增量操作更新所述离线字典文件,根据所述增量操作生成增量同步消息;若所述增量操作为DML操作,则根据所述离线字典文件和所述增量操作生成增量同步消息;将所述增量同步消息发送目标端,以便于所述目标端根据所述增量同步消息更新所述同步表;
捕获解析到所述增量操作对应的提交操作后,设置提交SCN,所述提交SCN的值为所述提交操作对应的SCN值,根据所述提交操作和所述提交SCN生成提交消息,将所述提交消息发送目标端。5.根据权利要求2所述的查询建表数据实时同步方法,其特征在于,所述查询建表数据实时同步方法还包括:源端初次启动时,在本地创建DDL事务目录;识别所述系统表操作和所述插入操作为查询建表操作后,在所述DDL事务目录下创建相应的DDL事务文件,用于保存未完成同步的查询建表操作;将所述查询建表操作的事务ID写入所述DDL事务文件;在所述DDL事务文件中设置第二标记,用于在本地记录是否已识别查询建表操作;...
【专利技术属性】
技术研发人员:皮宇,孙峰,赵家威,刘启春,
申请(专利权)人:武汉达梦数据库股份有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。