[发明专利]一种Oracle数据库同步环境下批量主键更新处理方法及系统有效
申请号: | 202110636234.5 | 申请日: | 2021-06-08 |
公开(公告)号: | CN113282600B | 公开(公告)日: | 2022-08-30 |
发明(设计)人: | 王县玲;高志会;陈勇铨;周华 | 申请(专利权)人: | 上海英方软件股份有限公司 |
主分类号: | G06F16/23 | 分类号: | G06F16/23;G06F16/2455;G06F16/27 |
代理公司: | 上海国智知识产权代理事务所(普通合伙) 31274 | 代理人: | 潘建玲 |
地址: | 200011 上海市黄*** | 国省代码: | 上海;31 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 oracle 数据库 同步 环境 批量 主键 更新 处理 方法 系统 | ||
1.一种Oracle数据库同步环境下批量主键更新处理方法,包括如下步骤:
步骤S1,当源端执行批量主键更新操作时,备端根据源端的批量主键更新操作解析成修改记录URP序列;
步骤S2,对所述URP序列的第一条URP操作执行普通URP操作处理:根据当前URP操作判断是否产生冲突,若产生冲突,则读取备端表中目标更新键值对应的记录存储到冲突历史并于备端表中删除记录后再执行当前URP操作;具体为:获取所述URP序列中的第一条URP操作,获得其目标更新键值,根据所述目标更新键值于备端表中判断是否产生冲突,若产生冲突,则将备端表中对应的记录读取出来,并以所述目标更新键值为键值更新到冲突历史中,并于备端表中删除该记录,最后执行该URP操作返回源备物理地址Rowid,并于冲突历史中该记录中记录该源备Rowid;
步骤S3,依序执行下一条URP操作,以该URP操作中的源键值查询冲突历史,在查询到有记录且该记录的源Rowid与当前URP操作的源Rowid不一致时,将更新操作变为插入操作,当查询到有记录且该记录的源Rowid与当前URP操作的源Rowid一致时,则执行普通URP操作处理,步骤S3进一步包括:
步骤S300,以当前URP操作中的源键值查询冲突历史,当查询到有记录,且该记录的源Rowid与本URP操作的源Rowid不一致时,进入步骤S301,否则若一致的话,则对其按普通URP操作处理;
步骤S301,将更新操作变插入操作,将URP的目标更新键值合并到冲突历史;
步骤S302,执行变更后的插入操作,判断是否有冲突,若有冲突,则按普通URP操作处理方法对冲突进行处理后执行插入操作;
步骤S303,当冲突历史的某个缓存记录成功插入后,将冲突历史中对应的缓存删除。
2.如权利要求1所述的一种Oracle数据库同步环境下批量主键更新处理方法,其特征在于:于步骤S302中,若有冲突,则将备端表中该插入IRP操作键值所对应的记录保存至冲突历史中,并于备端表中删除该记录,然后执行该插入操作,于冲突历史相应记录中记录源备Rowid。
3.如权利要求1所述的一种Oracle数据库同步环境下批量主键更新处理方法,其特征在于,所述方法还包括如下步骤:
步骤S4,当对IOT表和以主键为分区条件的表进行批量主键更新时,对源端每条URP操作产生一条删除记录DRP和插入记录IRP操作;
步骤S5,依次执行所述DRP操作与IRP操作,执行DRP操作时,以当前DRP操作的主键值查询冲突历史,如果没有记录或者有记录但当前DRP操作的源Rowid与冲突历史中对应键值记录的源Rowid不一致,则直接删除备端表中当前主键值对应的记录;若冲突历史中有记录且当前DRP操作的源Rowid与冲突历史中对应键值记录的源Rowid一致,则删除冲突历史中该键值对应的记录,同时删除备端表中对应的记录;执行IRP操作时,尝试插入记录,如果有冲突,则按普通URP操作处理,没有冲突则插入成功,并返回Rowid。
4.一种Oracle数据库同步环境下批量主键更新处理系统,包括:
批量更新操作解析单元,用于在同步环境下,当源端执行批量主键更新操作时,根据源端的批量主键更新操作解析成URP序列;
URP操作依序执行单元,用于依序执行所述URP序列中的URP操作,首先对第一条URP操作执行普通URP操作处理,产生冲突时将该URP操作的目标更新键值对应的记录存储到冲突历史并于备端表中删除记录后执行当前URP操作;然后执行下一条URP操作,以该URP操作中的源键值查询冲突历史,在查询到有记录且该记录的源Rowid与当前URP操作的源Rowid不一致时,将更新操作变为插入操作,当查询到有记录且该记录的源Rowid与当前URP操作的源Rowid一致时,则执行普通URP操作处理。
5.如权利要求4所述的一种Oracle数据库同步环境下批量主键更新处理系统,其特征在于,所述系统还包括:
特殊解析处理单元,用于当对IOT表和以主键为分区条件的表进行批量主键更新时,对源端每条URP操作解析产生一条DRP和IRP操作;
DRP操作执行单元,用于执行DRP操作,以当前DRP操作的主键值查询冲突历史,如果没有记录或者有记录但当前DRP操作的源Rowid与冲突历史中对应键值记录的源Rowid不一致,就直接删除备端表中当前主键值对应的记录;若冲突历史中有记录且当前DRP操作的源Rowid与冲突历史中对应键值记录的源Rowid一致,则删除冲突历史中该键值对应的记录,并且删除备端表中对应的记录;
IRP操作执行单元,用于执行IRP操作,尝试插入记录,并返回Rowid,如果有冲突,则按普通URP操作冲突处理方式处理,没有冲突则插入成功。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于上海英方软件股份有限公司,未经上海英方软件股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202110636234.5/1.html,转载请声明来源钻瓜专利网。