CN113515573B - 一种oracle数据库一对多协商复制断点的方法及系统 - Google Patents
一种oracle数据库一对多协商复制断点的方法及系统 Download PDFInfo
- Publication number
- CN113515573B CN113515573B CN202110499953.7A CN202110499953A CN113515573B CN 113515573 B CN113515573 B CN 113515573B CN 202110499953 A CN202110499953 A CN 202110499953A CN 113515573 B CN113515573 B CN 113515573B
- Authority
- CN
- China
- Prior art keywords
- file
- sequence number
- breakpoint
- target
- negotiation
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
- G06F16/273—Asynchronous replication or reconciliation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/284—Relational databases
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种ORACLE数据库一对多协商复制断点的方法及系统,所述方法包括如下步骤:步骤S1,当产生复制中断时,向各目标端发送协商TF文件序号的协商指令,与各目标端协商TF文件序号;步骤S2,针对每个目标端,根据协商的TF文件序号于源端相应TF文件中查找事务提交信息,并获取最后的事务提交信息的RBA信息作为对应目标端的断点;步骤S3,在完成各目标端的断点数据收集后,对断点数据从小到大进行排序,并从最小断点开始,判断断点数据是否合法,在判断出某一断点数据合法后,标记该断点之后的所有断点信息对应的目标端为正常复制状态,并将该合法断点作为REDOLOG文件的分析起点启动复制。
Description
技术领域
本发明涉及数据库同步技术领域,特别是涉及一种ORACLE数据库一对多协商复制断点的方法及系统。
背景技术
ORACLE数据库是一种使用非常广泛的数据库,在生产环境中为了满足容灾和读写分离、数据分发等需求,经常会部署ORACLE数据库复制产品,将源库实时数据复制到目标库。
ORACLE数据库向开发者提供了读取数据变化的重写日志机制,即REDOLOG,ORACLE数据库中将所有的数据库变化历史、数据库的所有操作变化都记录在重做日志REDOLOG中,对于ORACLE数据库复制产品,通过分析源库重做日志REDOLOG中的记录变化,然后将这些变化数据还原为SQL语句载到目标库中,可以实现ORACLE数据库的复制。
在ORACLE数据库复制中,还需要解决复制中断然后继续复制的问题,即需要保证复制的连续性,特别是在一对多复制情况下,每个目标数据库的复制进度不同,在复制中断后,需要确保每个目标库复制连续,但现有技术均未能很好地解决复制中断后保证复制的连续性问题,因此实有必要提出一种技术手段,以解决上述问题。
发明内容
为克服上述现有技术存在的不足,本发明之目的在于提供一种ORACLE数据库一对多协商复制断点的方法及系统,以通过在ORACLE数据库一对多复制过程中协商复制断点,从而在复制中断后,确保每个目标库复制连续。
为达上述目的,本发明提出一种ORACLE数据库一对多协商复制断点的方法,包括如下步骤:
步骤S1,当产生复制中断时,向各目标端发送协商TF文件序号的协商指令,与各目标端协商TF文件序号;
步骤S2,针对每个目标端,根据协商的TF文件序号于源端相应TF文件中查找事务提交信息,并获取最后的事务提交信息的RBA信息作为对应目标端的断点;
步骤S3,在完成各目标端的断点数据收集后,对断点数据从小到大进行排序,并从最小断点开始,判断断点数据是否合法,在判断出某一断点数据合法后,标记该断点之后的所有断点信息对应的目标端为正常复制状态,并将该合法断点作为REDOLOG文件的分析起点启动复制。
优选地,步骤S1进一步包括:
步骤S100,向各目标端发送协商TF文件序号的指令以及源端最大的TF文件序号;
步骤S101,接收各目标端返回的目标端最大的TF文件序号及该最大的TF文件序号对应的TF文件大小;
步骤S102,根据接收的各目标端反馈的最大TF文件序号及TF文件大小,判断是否协商成功,于判断协商成功,获得协商的TF文件序号。
优选地,于步骤S101中,各目标端在接收到协商文件序号的协商指令后,查询其自身的TF目录,若其TF目录为空则将0作为其最大的TF文件序号发给源端;否则,在其自身TF目录中查询最大的TF文件序号,并截断不完整的事务,判断查询到的最大的TF文件序号是否大于接收的源端最大的TF文件序号,若大于,则返回协商序号失败结果至源端,否则将目标端最大的TF文件序号和该最大的TF文件序号对应的TF文件大小信息发送给源端。
优选地,于步骤S102中,当源端接收到各目标端返回的最大TF文件序号和TF文件大小信息后,如果接收的TF文件序号为0,则认为协商成功;若该TF文件序号在源端本地对应的TF文件中不存在或者目标端返回的TF文件大小大于源端相同TF文件序号的文件大小,则协商失败,反之则协商TF文件序号成功。
优选地,步骤S1还包括:
步骤S103,若协商失败,则清除源端本地存储的对应TF目录。
优选地,于步骤S2中,若未能获取到对应某个目标端的断点,则向该目标端发送查询断点的指令,获取该目标端返回的断点数据。
优选地,当目标端接收到查询断点的指令时,在其自身TF文件中查找事务提交信息,获取最后的事务提交消息的RBA信息作为断点返回给源端。
优选地,步骤S3进一步包括:
步骤S300,当完成各目标端的断点数据收集后,对各断点RBA信息从小到大进行排序;
步骤S301,从最小的断点开始,若其RBA信息中redo序列号对应的REDOLOG文件在数据库中依旧存在,则表示该断点RBA合法,标记改断点之后的所有断点信息对应的目标端为正常复制状态,并跳转到步骤S302;否则标记该断点对应的目标端复制异常,继续检查下一个断点;
步骤S302,将步骤301获得的合法断点RBA,作为REDOLOG文件的分析起点,启动复制,并将后续分析出的数据分发送到处于正常复制状态的目标端。
优选地,于步骤S302中,后续分发到各处于正常复制状态的目标端的数据以各个目标端对应的断点RBA作为过滤的条件,小于对应断点RBA的数据不允向对应目标端发送。
为达到上述目的,本发明还提供一种ORACLE数据库一对多协商复制断点的系统,包括:
协商处理单元,用于在产生复制中断时,向各目标端发送协商TF文件序号的协商指令,与各目标端协商TF文件序号;
断点确定单元,用于针对每个目标端,根据协商的TF文件序号于源端相应TF文件中查找事务提交信息,并获取最后的事务提交信息的RBA信息作为对应目标端的断点;
启动复制判断处理单元,用于在完成各目标端的断点数据收集后,对断点数据从小到大进行排序,并从最小断点开始,判断断点数据是否合法,在判断出某一断点数据合法后,标记该断点之后的所有断点信息对应的目标端为正常复制状态,并将该合法断点作为REDOLOG文件的分析起点启动复制。
与现有技术相比,本发明一种ORACLE数据库一对多协商复制断点的方法及系统通过在产生复制中断时,由源端向各目标端发送协商TF文件序号的协商指令,与各目标端协商TF文件序号,并根据协商的TF文件序号获取各目标端的断点,对各目标端对应的断点数据从小到大进行排序,并从最小断点开始,判断断点数据是否合法,在判断出某一断点数据合法后,标记该断点之后的所有断点信息对应的目标端为正常复制状态,并将该合法断点作为REDOLOG文件的分析起点启动复制,从而实现了在复制中断后,确保每个目标库复制连续的目的。
附图说明
图1为本发明一种ORACLE数据库一对多协商复制断点的方法的步骤流程图;
图2为本发明一种ORACLE数据库一对多协商复制断点的系统的系统架构图。
具体实施方式
以下通过特定的具体实例并结合附图说明本发明的实施方式,本领域技术人员可由本说明书所揭示的内容轻易地了解本发明的其它优点与功效。本发明亦可通过其它不同的具体实例加以施行或应用,本说明书中的各项细节亦可基于不同观点与应用,在不背离本发明的精神下进行各种修饰与变更。
在介绍本发明之前,先介绍本发明涉及的几个概念:
Oracle操作:Oracle的操作除了包含数据的增删改(DML)操作外,还包括一些事务方面的操作及其他操作,例如包括事务的Begin、事务的Commit提交操作。
Oracle数据库事务:一个Oracle的数据库事务可能会包括一批DML操作,或者DDL操作。事务一般以Begin操作为开始,以Commit或Rollback操作为结束。
Oracle的REDOLOG文件:Oracle的重做日志文件,记录了Oracle所产生的所有事务数据,用于确保Oracle数据库的故障恢复。每个Oracle实例会有一组在线Redo文件循环使用,并且可以将用过的REDOLOG文件进行归档。每个REDOLOG都有一个序号Sequence与之唯一相对应。
RBA概念:ORACLE数据库的REDOLOG文件有个RBA(Redo Byte Address)概念,RBA由3部分组成,分别为logfile sequence number(日志文件顺序号),logfile block number(日志文件块号),byte offsetinto the block(块中的字节偏置),即redo序列号,redo块号以及偏移量。RBA可以代表REDOLOG的一个位置,可以用于在数据复制过程中记录数据复制的位置,RBA在每条操作上都有记录,其记录了每条操作的更新历史,不管是commit和rollback还是单纯的操作都有RBA记录。
图1为本发明一种ORACLE数据库一对多协商复制断点的方法的步骤流程图。如图1所示,本发明一种ORACLE数据库一对多协商复制断点的方法,包括如下步骤:
步骤S1,当产生复制中断时,源端向各目标端发送协商TF文件序号的协商指令,与各目标端协商TF文件序号。
为方便描述,在本发明中,将部署在源数据库所在机器上的复制软件称为源端,部署在目标数据库所在机器上的复制软件称为目标端。
在进行ORACLE数据库复制时,源端的解析进程会持续监控源端ORACLE数据库的REDOLOG文件,对新增的变化数据进行分析,并将从REDOLOG文件中分析出来的数据存储到文件中,称之为TF文件,源端将解析出的数据连续存放在相应的TF文件中,每个目标端对应一个TF文件,即有几个目标端就有几个TF文件。在本发明中,TF文件是一系列固定大小的序号递增的文件,TF文件中包含插入、更新、删除操作等数据变化信息,同时包含事务的起始和结束信息,解析进程会将事务结束(commit或Rollback)时的REDOLOG的RBA记录到TF的事务结束信息中。为安全起见,TF文件在目标端和源端均有保存(即当源端解析得到TF文件后会发送给对应的目标端),且针对不同的目标端,由于需要同步的内容不尽相同,文件序列不同,对应的TF文件在目标端单独存储。
具体地,步骤S1进一步包括:
步骤S100,源端向各个目标端发送协商TF文件序号的指令和源端最大的TF文件序号。具体地,源端向所有目标端(可通讯的目标端,如果有些目标端离线或者机器出了问题,则发不过去)发送协商TF文件序号的指令和源端最大的TF文件序号,即源端发送的指令至少包括目标端TF文件存放的位置以及源端最大的TF文件序号。
为了防止在复制过程中发生灾难,程序崩溃或者异常情况之后,TF文件序号产生的影响,在异常原因(如宕机、进程崩溃等)或者用户操作引起复制中断时,为了安全则需要协商TF文件序号。具体地说,当因为异常原因(如宕机、进程崩溃等)或者用户操作引起复制中断时,由源端向各目标端发送协商指令,以协商TF文件序号,并发送源端最大的TF文件序号。
步骤S101,接收各目标端返回的目标端最大的TF文件序号及该最大的TF文件序号对应的TF文件大小。也就是说,当各个目标端接收到源端发送的协商文件序号的协商指令,会根据协商指令于自身的TF目录查询获取最大的TF文件序号及其对应的TF文件大小,并将获得的最大的TF文件序号及该最大的TF文件序号对应的TF文件大小发送给源端。
具体地,各目标端接收到协商文件序号的协商指令后,查询其自身的TF目录,如果其TF目录为空则将0作为最大的TF文件序号发给源端;否则,在TF目录中查询最大的TF文件序号,并截断不完整的事务,判断查询到的最大的TF文件序号是否大于源端发送过来的源端最大的TF文件序号,若大于,则返回协商序号失败结果至源端(因为源端是产生数据的一端,源端发送目标端的数据只会少二不会多,若文件序号大于源端的数据,则认为目标端的数据错误),否则将目标端最大的TF文件序号和该最大的TF文件序号对应的TF文件大小信息发送给源端。
步骤S102,根据接收的各目标端反馈的协商的TF文件序号及TF文件大小,判断是否协商成功,于判断协商成功,获得协商的TF文件序号。
具体地,当源端接收到各目标端返回的协商的TF文件序号和TF文件大小信息后,如果接收的协商的TF文件序号为0,则认为协商成功;若该协商的TF文件序号在源端本地对应的TF文件中不存在或者目标端返回的TF文件大小大于源端相同TF文件序号的文件大小,则表示协商失败,反之表示协商TF文件序号成功。
步骤S103,若协商TF文件序号失败,清除源端本地存储的对应TF目录。
也就是说,在协商TF文件序号时,例如源端的相同文件序号的TF文件大小小于目标端的TF文件,表示可能是出于某种原因导致源端可能有丢失文件的情况,此时源端的文件其实已经无效,则直接清理掉源端的TF文件,由于目标端的数据后续还要使用,目标端的数据不删除。
步骤S2,针对每个目标端,根据协商成功的TF文件序号于源端相应TF文件中查找事务提交信息(COMMIT信息),并获取最后的事务提交信息的RBA信息作为对应目标端的断点。
也就是说,在协商成功的基础上,根据协商成功的TF文件序号于源端TF文件中获取相应的TF文件,在相应的TF文件中查找事务提交信息,获取最后的事务提交信息的RBA信息作为对应目标端的断点。
优选地,若根据步骤S2未能获取到对应某个目标端的断点,则向该目标端发送查询断点的指令(该指令包含目标端TF文件存放的位置,如果TF文件是压缩的还包含有压缩级别),由该目标端在TF文件中查找事务提交信息,获取最后的事务提交消息的RBA信息,作为断点返回给源端,源端则将该断点作为对应目标端的断点。
步骤S3,在完成各目标端的断点数据收集后,对断点数据从小到大进行排序,并从最小断点开始,判断断点数据是否合法,在判断出某一断点数据合法后,标记该断点之后的所有断点信息对应的目标端为正常复制状态,并将该合法断点作为REDOLOG文件的分析起点启动复制。
具体地,步骤S3进一步包括:
步骤S300,当源端完成各目标端的断点数据收集后,对各目标端以断点数据的RBA信息从小到大进行排序。具体地,排序以RBA信息的redo序列号为首要条件,RBA的redoblock号为次要条件,没有断点的目标端则排在最后(即如果没有TF文件则说明它是新增复制的情况),本发明默认没有断点的目标端属于新增复制的情况。
步骤S301,从最小的断点开始,如果RBA中redo序列号对应的REDOLOG在数据库中依旧存在,则表示此断点RBA合法,标记此断点之后的所有断点信息对应的目标端为正常复制状态,并跳转到步骤S302;否则标记此断点对应的目标端复制异常,继续检查下一个断点。
步骤S302,将步骤301获得的合法RBA,作为REDOLOG文件的分析起点,启动复制,后续分析出的数据分发到处于正常复制状态的目标端。优选地,后续分发到各处于正常复制状态的目标端的数据以各个目标端对应的断点(RBA)作为过滤的条件,小于对应RBA的数据不允许向对应目标端发送(通过比较redo序列号,block块号和偏移量能够确定这个RBA是否小于对应的RBA数据)。若步骤S301没有找到合法的RBA,则不启动复制。
图2为本发明一种ORACLE数据库一对多协商复制断点的系统的架构图。如图2所示,本发明一种ORACLE数据库一对多协商复制断点的系统,包括:
协商处理单元201,用于在产生复制中断时,向各目标端发送协商TF文件序号的协商指令,与各目标端协商TF文件序号。
为方便描述,在本发明中,将部署在源数据库所在机器上的复制软件称为源端,部署在目标数据库所在机器上的复制软件称为目标端。
在进行ORACLE数据库复制时,源端的解析进程会持续监控源端ORACLE数据库的REDOLOG文件,对新增的变化数据进行分析,并会将从REDOLOG中分析出来的数据存储到文件中,称之为TF文件。在本发明中,TF文件是一系列固定大小的序号递增的文件,TF文件中包含插入、更新、删除操作等数据变化信息,同时包含事务的起始和结束信息,解析进程会将事务结束时的REDOLOG的RBA记录到TF的事务结束信息中。为安全起见,TF文件在目标端和源端均有保存,且针对不同的目标端,由于需要同步的内容不尽相同,文件序列不同,对应的TF文件在目标端单独存储。
具体地,协商处理单元201进一步包括:
协商指令发送模块,用于向各个目标端发送协商TF文件序号的指令和源端最大的TF文件序号。
也就是说,当因为异常原因(如宕机、进程崩溃等)或者用户操作引起复制中断时,由源端的协商指令发送模块向各目标端发送协商指令,以协商TF文件序号,并发送源端最大的TF文件序号。
目标端协商信息接收模块,用于接收各目标端返回的目标端最大的TF文件序号及该最大的TF文件序号对应的TF文件大小。也就是说,当各个目标端接收到协商文件序号的协商指令,会根据协商指令于自身的TF目录查询获取最大的TF文件序号及其对应的TF文件大小,并将获得的最大的TF文件序号及该最大的TF文件序号对应的TF文件大小发送给源端的目标端协商信息接收模块。
具体地,各目标端接收到协商文件序号的协商指令后,查询其自身的TF目录,如果其TF目录为空则将0作为最大的TF文件序号发给源端;否则,在TF目录中查询最大的TF文件序号,并截断不完整的事务,判断查询到的最大的TF文件序号是否大于源端发送过来的源端最大的TF文件序号,若大于,则返回协商序号失败结果至目标端协商信息接收模块,否则将目标端最大的TF文件序号和该最大的TF文件序号对应的TF文件大小信息发送给目标端协商信息接收模块。
协商结果判断模块,用于根据接收的各目标端反馈的协商的TF文件序号及TF文件大小,判断是否协商成功,于判断协商成功,获得协商的TF文件序号。
具体地,当接收到各目标端返回的协商的TF文件序号和TF文件大小信息后,协商结果判断模块判断接收到的协商的TF文件序号,如果接收的协商的TF文件序号为0,则认为协商成功;若该协商的TF文件序号在源端本地对应的TF文件中不存在或者目标端返回的TF文件大小大于源端相同TF文件序号的文件大小,则表示协商失败,反之表示协商TF文件序号成功。
协商失败处理模块,用于在判断协商TF文件序号失败时,清除本地存储的对应TF目录。
断点确定单元202,用于针对每个目标端,根据协商成功的TF文件序号于源端相应TF文件中查找事务提交信息,并获取最后的事务提交信息的RBA信息作为对应目标端的断点。
优选地,若根据断点确定单元202未能获取到对应某个目标端的断点,则向该目标端发送查询断点的指令,由该目标端在TF文件中查找事务提交信息,获取最后的事务提交消息的RBA信息,作为断点返回给源端,源端的断点确定单元202则将该断点作为对应目标端的断点。
启动复制判断处理单元203,用于在完成各目标端的断点数据收集后,对断点数据从小到大进行排序,并从最小断点开始,判断断点数据是否合法,在判断出某一断点数据合法后,标记该断点之后的所有断点信息对应的目标端为正常复制状态,并将该合法断点作为REDOLOG的分析起点启动复制。
具体地,启动复制判断处理单元203进一步包括:
断点排序模块,用于当完成各目标端的断点数据收集后,对各目标端以断点数据的RBA信息从小到大进行排序。具体地,排序以RBA信息的redo序列号为首要条件,RBA的redo block号为次要条件,没有断点的目标端排在最后,本发明默认没有断点的目标端属于新增复制的情况。
合法断点判断模块,用于从最小的断点开始,如果RBA中redo序列号对应的REDOLOG在数据库中依旧存在,则表示此断点RBA合法,标记此断点之后的所有断点信息对应的目标端为正常复制状态,并跳转到复制启动处理模块;否则标记此断点对应的目标端复制异常,继续检查下一个断点。
复制启动处理模块,用于将合法断点判断模块获得的合法RBA,作为REDOLOG的分析起点,启动复制,并将后续分析出的数据分发到处于正常复制状态的目标端。优选地,将后续分发到各处于正常复制状态的目标端的数据以各个目标端对应的断点(RBA)作为过滤的条件,小于对应RBA的数据不允许向对应目标端发送。若合法断点判断模块没有找到合法的RBA,则复制启动处理模块不启动复制。
实施例
在本实施例中,当因为异常原因(如宕机、进程崩溃等)或者用户操作引起复制中断时,按如下步骤重新启动复制:
步骤1,源端向各个目标端发送协商文件序号的指令和源端最大的文件序号;
步骤2,各个目标端接收协商文件序号的指令,如果TF目录为空则将0作为文件序号发给源端;否则,在TF目录中查询最大的TF序号,并截断不完整的事务。如果备端最大的TF序号>源端发送过来的TF序号则返回协商序号失败;否则将备端最大的TF序号和TF序号对应的TF文件大小发给源端;
步骤3,源端接收各个目标端返回的协商文件序号和TF大小,如果序号为0,则认为协商成功;如果此序号在本地对应的TF中不存在或者返回的TF大小>源端相同TF序号的文件大小则协商失败反之表示协商文件序号成功;
步骤4,如果协商序号失败,清除本地存储的对应TF目录;
步骤5,针对每个目标端,在源端相应TF文件中查找事务提交信息,并取最后的事务提交消息的RBA信息,作为对应目标端的断点;
步骤6,如果步骤5没能获取到对应某个目标端的断点,则向该目标端发送查询断点的指令;
步骤7,目标端接收查询断点的指令后,在TF文件中查找事务提交信息,并取最后的事务提交消息的RBA信息,作为断点返回给源端;
步骤8,源端完成断点数据收集之后,对其从小到大进行排序。排序以RBA的序号为首要条件,RBA的BLOCK号为次要条件。没有断点的目标端排在最后,默认此目标端属于新增复制的情况;
步骤9,源端从最小的断点开始,如果RBA中序列号对应的REDOLOG在数据库中依旧存在,则此RBA合法,并标记此断点之后的所有断点信息对应的目标端为正常复制状态,跳转到步骤10;否则标记此断点对应的目标端复制异常,继续检查下一个断点。
步骤10,如果步骤9没有找到合法的RBA,则复制不可启动;否则,将步骤9获得的合法RBA,作为REDOLOG的分析起点,启动复制。后续分析出的数据分发到正常复制的目标端,并以各个目标库的断点(RBA)作为过滤的条件,小于对应RBA的数据不允向对应目标端发送。
综上所述,本发明一种ORACLE数据库一对多协商复制断点的方法及系统通过在产生复制中断时,由源端向各目标端发送协商TF文件序号的协商指令,与各目标端协商TF文件序号,并根据协商的TF文件序号获取各目标端的断点,对各目标端对应的断点数据从小到大进行排序,并从最小断点开始,判断断点数据是否合法,在判断出某一断点数据合法后,标记该断点之后的所有断点信息对应的目标端为正常复制状态,并将该合法断点作为REDOLOG文件的分析起点启动复制,从而实现了在复制中断后,确保每个目标库复制连续的目的。
上述实施例仅例示性说明本发明的原理及其功效,而非用于限制本发明。任何本领域技术人员均可在不违背本发明的精神及范畴下,对上述实施例进行修饰与改变。因此,本发明的权利保护范围,应如权利要求书所列。
Claims (8)
1.一种ORACLE数据库一对多协商复制断点的方法,包括如下步骤:
步骤S1,在进行ORACLE数据库复制时,源端的解析进程持续监控源端ORACLE数据库的REDOLOG文件,对新增的变化数据进行分析,并将从REDOLOG文件中分析出来的数据存储到文件中,称为TF文件;当产生复制中断时,源端向各目标端发送协商TF文件序号的协商指令,与各目标端协商TF文件序号;步骤S1进一步包括:
步骤S100,向各目标端发送协商TF文件序号的指令以及源端最大的TF文件序号;
步骤S101,接收各目标端返回的目标端最大的TF文件序号及该最大的TF文件序号对应的TF文件大小;各目标端在接收到协商文件序号的协商指令后,查询其自身的TF目录,若其TF目录为空则将0作为其最大的TF文件序号发给源端;否则,在其自身TF目录中查询最大的TF文件序号,并截断不完整的事务,判断查询到的最大的TF文件序号是否大于接收的源端最大的TF文件序号,若大于,则返回协商序号失败结果至源端,否则将目标端最大的TF文件序号和该最大的TF文件序号对应的TF文件大小信息发送给源端;
步骤S102,根据接收的各目标端反馈的最大TF文件序号及TF文件大小,判断是否协商成功,于判断协商成功,获得协商的TF文件序号;
步骤S2,针对每个目标端,根据协商的TF文件序号于源端相应TF文件中查找事务提交信息,并获取最后的事务提交信息的RBA信息作为对应目标端的断点;
步骤S3,在完成各目标端的断点数据收集后,对断点数据进行排序,并从最小断点开始,判断断点数据是否合法,在判断出某一断点数据合法后,标记该断点之后的所有断点信息对应的目标端为正常复制状态,并将该合法断点作为REDOLOG文件的分析起点启动复制。
2.如权利要求1所述的一种ORACLE数据库一对多协商复制断点的方法,其特征在于:于步骤S102中,当源端接收到各目标端返回的最大TF文件序号和TF文件大小信息后,如果接收的TF文件序号为0,则认为协商成功;若该TF文件序号在源端本地对应的TF文件中不存在或者目标端返回的TF文件大小大于源端相同TF文件序号的文件大小,则协商失败,反之则协商TF文件序号成功。
3.如权利要求2所述的一种ORACLE数据库一对多协商复制断点的方法,其特征在于,步骤S1还包括:
步骤S103,若协商失败,则清除源端本地存储的对应TF目录。
4.如权利要求2所述的一种ORACLE数据库一对多协商复制断点的方法,其特征在于:于步骤S2中,若未能获取到对应某个目标端的断点,则向该目标端发送查询断点的指令,获取该目标端返回的断点数据。
5.如权利要求4所述的一种ORACLE数据库一对多协商复制断点的方法,其特征在于:当目标端接收到查询断点的指令时,在其自身TF文件中查找事务提交信息,获取最后的事务提交消息的RBA信息作为断点返回给源端。
6.如权利要求5所述的一种ORACLE数据库一对多协商复制断点的方法,其特征在于,步骤S3进一步包括:
步骤S300,当完成各目标端的断点数据收集后,对各目标端以断点数据的RBA信息从小到大进行排序;
步骤S301,从最小的断点开始,若其RBA信息中redo序列号对应的REDOLOG文件在数据库中依旧存在,则表示该断点RBA合法,标记该断点之后的所有断点信息对应的目标端为正常复制状态,并跳转到步骤S302;否则标记该断点对应的目标端复制异常,继续检查下一个断点;
步骤S302,将步骤301获得的合法断点RBA,作为REDOLOG文件的分析起点,启动复制,并将后续分析出的数据分发送到处于正常复制状态的目标端。
7.如权利要求6所述的一种ORACLE数据库一对多协商复制断点的方法,其特征在于:于步骤S302中,后续分发到各处于正常复制状态的目标端的数据以各个目标端对应的断点RBA作为过滤的条件,小于对应断点RBA的数据不允许向对应目标端发送。
8.一种ORACLE数据库一对多协商复制断点的系统,包括:
协商处理单元,用于在进行ORACLE数据库复制时,源端的解析进程持续监控源端ORACLE数据库的REDOLOG文件,对新增的变化数据进行分析,并将从REDOLOG文件中分析出来的数据存储到文件中,称为TF文件;在产生复制中断时,向各目标端发送协商TF文件序号的协商指令,与各目标端协商TF文件序号;向各目标端发送协商TF文件序号的指令以及源端最大的TF文件序号;接收各目标端返回的目标端最大的TF文件序号及该最大的TF文件序号对应的TF文件大小;各目标端在接收到协商文件序号的协商指令后,查询其自身的TF目录,若其TF目录为空则将0作为其最大的TF文件序号发给源端;否则,在其自身TF目录中查询最大的TF文件序号,并截断不完整的事务,判断查询到的最大的TF文件序号是否大于接收的源端最大的TF文件序号,若大于,则返回协商序号失败结果至源端,否则将目标端最大的TF文件序号和该最大的TF文件序号对应的TF文件大小信息发送给源端;根据接收的各目标端反馈的最大TF文件序号及TF文件大小,判断是否协商成功,于判断协商成功,获得协商的TF文件序号;
断点确定单元,用于针对每个目标端,根据协商的TF文件序号于源端相应TF文件中查找事务提交信息,并获取最后的事务提交信息的RBA信息作为对应目标端的断点;
启动复制判断处理单元,用于在完成各目标端的断点数据收集后,对断点数据从小到大进行排序,并从最小断点开始,判断断点数据是否合法,在判断出某一断点数据合法后,标记该断点之后的所有断点信息对应的目标端为正常复制状态,并将该合法断点作为REDOLOG文件的分析起点启动复制。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110499953.7A CN113515573B (zh) | 2021-05-08 | 2021-05-08 | 一种oracle数据库一对多协商复制断点的方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110499953.7A CN113515573B (zh) | 2021-05-08 | 2021-05-08 | 一种oracle数据库一对多协商复制断点的方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113515573A CN113515573A (zh) | 2021-10-19 |
CN113515573B true CN113515573B (zh) | 2023-01-17 |
Family
ID=78064043
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110499953.7A Active CN113515573B (zh) | 2021-05-08 | 2021-05-08 | 一种oracle数据库一对多协商复制断点的方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113515573B (zh) |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107122360A (zh) * | 2016-02-24 | 2017-09-01 | 阿里巴巴集团控股有限公司 | 数据迁移系统和方法 |
CN111427898A (zh) * | 2020-03-16 | 2020-07-17 | 上海爱数信息技术股份有限公司 | 一种基于解析Oracle日志的持续数据保护系统及方法 |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102495906A (zh) * | 2011-12-23 | 2012-06-13 | 天津神舟通用数据技术有限公司 | 一种实现断点续传的增量式数据迁移方法 |
CN105320769A (zh) * | 2015-10-28 | 2016-02-10 | 浪潮(北京)电子信息产业有限公司 | 一种Oracle数据库的数据同步方法及系统 |
CN105868078B (zh) * | 2016-04-14 | 2019-03-08 | 国家电网公司 | 基于动态视图监控的Oracle RAC数据库SQL流捕获方法及系统 |
KR101904786B1 (ko) * | 2017-03-06 | 2018-10-08 | 주식회사 데이터스트림즈 | 소스 데이터베이스 관리시스템에서 변경되는 데이터를 실시간으로 목표 데이터베이스 관리시스템에 복제하는 장치 및 그 방법 |
CN107682399B (zh) * | 2017-08-29 | 2020-07-14 | 中国信息安全测评中心 | 一种基于大数据的文件夹断点续传方法 |
CN109597709B (zh) * | 2018-11-15 | 2023-01-10 | 杭州沃趣科技股份有限公司 | 一种用于Oracle Dataguard创建过程断点续传的方法 |
CN110555055A (zh) * | 2019-07-19 | 2019-12-10 | 国网辽宁省电力有限公司大连供电公司 | 针对Oracle数据库重做日志文件的数据挖掘方法 |
CN110704242B (zh) * | 2019-09-24 | 2023-06-13 | 上海爱数信息技术股份有限公司 | 一种连续数据保护系统及方法 |
CN111061594A (zh) * | 2019-12-02 | 2020-04-24 | 上海浪擎信息科技有限公司 | 一种基于日志逻辑解析的关系型数据库数据复制方法 |
-
2021
- 2021-05-08 CN CN202110499953.7A patent/CN113515573B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107122360A (zh) * | 2016-02-24 | 2017-09-01 | 阿里巴巴集团控股有限公司 | 数据迁移系统和方法 |
CN111427898A (zh) * | 2020-03-16 | 2020-07-17 | 上海爱数信息技术股份有限公司 | 一种基于解析Oracle日志的持续数据保护系统及方法 |
Also Published As
Publication number | Publication date |
---|---|
CN113515573A (zh) | 2021-10-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108959400B (zh) | 银行系统历史数据清理方法及装置 | |
US8108343B2 (en) | De-duplication and completeness in multi-log based replication | |
US7552148B2 (en) | Shutdown recovery | |
WO2021184679A1 (zh) | 持续数据保护系统及方法 | |
EP0402542B1 (en) | Method of removing uncommitted changes to stored data by a database management system | |
CN107291787B (zh) | 主备数据库切换方法和装置 | |
US5884328A (en) | System and method for sychronizing a large database and its replica | |
US7660832B2 (en) | System recovery method and computer system using the same | |
CN110727548B (zh) | 一种基于数据库dml同步的持续数据保护方法及装置 | |
US7133884B1 (en) | Unobtrusive point-in-time consistent copies | |
US7840539B2 (en) | Method and system for building a database from backup data images | |
WO2016180160A1 (zh) | 数据快照的恢复方法和装置 | |
US20040163029A1 (en) | Data recovery techniques in storage systems | |
CN110209527B (zh) | 数据恢复方法、装置、服务器以及存储介质 | |
US6594676B1 (en) | System and method for recovery of multiple shared database data sets using multiple change accumulation data sets as inputs | |
CN109992628B (zh) | 数据同步的方法、装置、服务器及计算机可读存储介质 | |
US20100088318A1 (en) | Information search system, method, and program | |
CN109902127B (zh) | 历史态数据处理方法、装置、计算机设备及存储介质 | |
CN108804239B (zh) | 平台整合的方法、装置、计算机设备和存储介质 | |
CN113792094A (zh) | 一种数据同步系统、方法、设备及介质 | |
CN115145697A (zh) | 数据库事务的处理方法、装置及电子设备 | |
CN113515573B (zh) | 一种oracle数据库一对多协商复制断点的方法及系统 | |
JP2006185108A (ja) | ストレージシステムのデータを管理する管理計算機及びデータ管理方法 | |
CN110543485B (zh) | 一种基于快照的区块链预约归档方法 | |
CN109313637A (zh) | 用于监视服务器系统的改变的方法和系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |