CN114385260A - 一种基于rowid区间的初始化装载方法及设备 - Google Patents
一种基于rowid区间的初始化装载方法及设备 Download PDFInfo
- Publication number
- CN114385260A CN114385260A CN202111534715.1A CN202111534715A CN114385260A CN 114385260 A CN114385260 A CN 114385260A CN 202111534715 A CN202111534715 A CN 202111534715A CN 114385260 A CN114385260 A CN 114385260A
- Authority
- CN
- China
- Prior art keywords
- rowid
- lsn
- loading
- data set
- interval
- 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.)
- Pending
Links
- 238000011068 loading method Methods 0.000 title claims abstract description 123
- 238000000034 method Methods 0.000 claims abstract description 39
- 238000001914 filtration Methods 0.000 claims abstract description 11
- 230000001360 synchronised effect Effects 0.000 claims description 35
- 230000015654 memory Effects 0.000 claims description 19
- 206010016754 Flashback Diseases 0.000 claims description 18
- 238000003860 storage Methods 0.000 claims description 17
- 230000008569 process Effects 0.000 claims description 11
- 238000005516 engineering process Methods 0.000 claims description 7
- 238000010586 diagram Methods 0.000 description 22
- 238000012216 screening Methods 0.000 description 10
- 230000004048 modification Effects 0.000 description 8
- 238000012986 modification Methods 0.000 description 8
- 101000978743 Homo sapiens Nephrocystin-1 Proteins 0.000 description 7
- 102100023187 Nephrocystin-1 Human genes 0.000 description 7
- 101000608935 Homo sapiens Leukosialin Proteins 0.000 description 6
- 102100039564 Leukosialin Human genes 0.000 description 6
- 230000006870 function Effects 0.000 description 5
- 238000007726 management method Methods 0.000 description 5
- 238000005096 rolling process Methods 0.000 description 5
- 238000004458 analytical method Methods 0.000 description 3
- 101150032953 ins1 gene Proteins 0.000 description 3
- 238000004519 manufacturing process Methods 0.000 description 3
- 238000012545 processing Methods 0.000 description 3
- 230000010076 replication Effects 0.000 description 3
- 101150089655 Ins2 gene Proteins 0.000 description 2
- 101100072652 Xenopus laevis ins-b gene Proteins 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 238000000605 extraction Methods 0.000 description 2
- 230000006872 improvement Effects 0.000 description 2
- 230000011218 segmentation Effects 0.000 description 2
- 201000006760 Senior-Loken syndrome Diseases 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000013481 data capture Methods 0.000 description 1
- 230000005012 migration Effects 0.000 description 1
- 238000013508 migration Methods 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 238000003672 processing method Methods 0.000 description 1
- 238000000926 separation method Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44521—Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3466—Performance evaluation by tracing or monitoring
- G06F11/3476—Data logging
-
- 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/24—Querying
- G06F16/245—Query processing
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Computational Linguistics (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Computing Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明涉及一种基于ROWID区间的初始化装载方法及设备。其方法部分主要包括:按照ROWID大小顺序将表数据集分割成若干个小数据集,并获得相对应的若干个ROWID区间;取一个小数据集,获取小数据集的装载LSN,并完成对该小数据集的装载;重复该步骤直至所有小数据集装载完成;开启数据同步后,目的端根据操作日志的ROWID定位所属的ROWID区间,通过操作LSN与对应的装载LSN进行对比以实现数据同步的过滤。本发明将待装载的结果集进行分割,将整个数据集按照指定的数值,分割为N份小的数据集,然后分别对N份小的数据集进行数据装载。这样一来,获取小的数据集数据的时间,将大大短于整个数据集的数据获取时间,从而避免“快照过旧”的问题。
Description
技术领域
本发明涉及数据库数据处理技术领域,特别是涉及一种基于ROWID区间的初始化装载方法及设备。
背景技术
目前基于数据库日志分析的异构数据库复制技术应用广泛。这种技术在源端捕获出数据库的增量数据,然后发送到目的端,在目的端通过通用的数据库访问接口,将增量数据应用到目标数据库,实现数据复制。这种技术因为使用到通用数据库接口,因此支持异构数据库***复制,支持异构操作***环境,并且目的端备机数据库***可读写,是一种“双活”***。
在进行数据库数据实时同步时,首先需要对目标数据库进行数据初始化操作,来获得数据同步的基础点。在完成数据初始化操作之后,即可在此基础数据之上进行实时增量数据同步。在现实数据库应用中,源端数据库中可能存在很多应用,这些应用会分分秒秒的对数据库进行修改操作,这些修改操作涉及的表如果数据量很大,那么这些表在实现源端数据库到目的端数据库的数据初始化就需要很长的结果集提取时间,在多版本功能的数据库环境下提取结果集时就会经常会报错“快照过旧”而导致初始化失败。快照过旧是带多版本功能数据库中很常见的一个错误,主要是由于数据库上频繁的操作快速消耗了回滚段的空间,数据库通过释放其它已提交事务的回滚段空间来进行补充,使得当前结果集提取时无法再通过相应的回滚段来回溯对应记录的修改历史而报错,因为此时对应的回滚段已经被释放不存在了,虽然可以通过扩展回滚段的空间来改善这种现像,但是这个错误,仍然不可避免。
因此,找到一种可以解决“快照过旧”错误对数据同步初始化装载功能的影响,保证装载完成开启同步以后源端数据库和目的端数据库的一致性,就成为业界亟待解决的技术问题。
发明内容
针对现有技术的以上缺陷或改进需求,本发明提供一种基于ROWID区间的初始化装载方法及设备,将待装载的结果集进行分割,将整个数据集按照指定的数值,分割为N份小的数据集,然后分别对N份小的数据集进行数据装载。这样一来,获取小的数据集数据的时间,将大大短于整个数据集的数据获取时间,从而避免“快照过旧”的问题,另外,ROWID是数据库的表中的每一行数据都有的一个唯一标识符,使用ROWID作为数据筛选条件,查询效率高,对数据库影响较小。
本发明实施例采用如下技术方案:
第一方面,本发明提供了一种基于ROWID区间的初始化装载方法,包括:
按照ROWID大小顺序将表数据集分割成若干个小数据集,并获得相对应的若干个ROWID区间;
取一个小数据集,获取小数据集的装载LSN,并完成对该小数据集的装载;重复该步骤直至所有小数据集装载完成;
开启数据同步后,目的端根据操作日志的ROWID定位所属的ROWID区间,通过操作LSN与对应的装载LSN进行对比以实现数据同步的过滤。
进一步的,所述按照ROWID大小顺序将表数据集分割成若干个小数据集,并获得相对应的若干个ROWID区间具体包括:
获取表数据集所有的EXTENT的信息,按照EXTENT第一页所在的文件号以及页号,对EXTENT进行排序;
根据指定的分组数n,将排序好的EXTENT分割成n个小数据集;
得到每一个小数据集ROWID的起始值ROWIDi,根据起始值ROWIDi划分出每个小数据集的ROWID区间;其中,ROWIDi为第i个小数据集中第一个EXTENT的第一页的第一行生成的ROWID,i∈[1,n],n为小数据集的个数。
进一步的,所述根据起始值ROWIDi划分出每个小数据集的ROWID区间具体包括:
若小数据集不是划分出的最后一个小数据集,则该小数据集的ROWID区间为[ROWIDi,ROWIDj);其中,j=i+1;
若小数据集是划分出的最后一个小数据集,则该小数据集的ROWID区间为[ROWIDi,ROWIDend];其中,ROWIDend为最后一个小数据集中最后一个EXTENT的最后一页的最后一行生成的ROWID。
优选的,所述取一个小数据集,获取小数据集的装载LSN,并完成对该小数据集的装载具体包括:
取一个小数据集,对源端数据库中待装载的表上S锁,并在源端查询源端数据库的当前LSN以作为装载LSN;
根据小数据集的ROWID区间范围对小数据集生成对应的查询语句并执行;
释放S锁后提取查询语句执行的结果集,并将提取的结果集发送到目的端进行保存。
进一步的,所述开启数据同步后,目的端根据操作日志的ROWID定位所属的ROWID区间,通过操作LSN与对应的装载LSN进行对比以实现数据同步的过滤具体包括:
源端捕获源端数据库的操作日志,对所述操作日志解析后将获得的操作信息发送到目的端执行同步;
目的端接收到源端发送过来的操作信息后根据事务ID进行分类管理,当接收到提交操作时,找到提交操作对应的事务准备执行;
目的端依次执行该事务中的每个操作,通过操作对应的表ID和ROWID值定位该操作所属的ROWID区间,以得到对应的装载LSN;
对比该操作的操作LSN和装载LSN的大小,当操作LSN小于装载LSN时将该操作丢弃,否则将该操作同步到目的端数据库。
另一优选的,所述取一个小数据集,获取小数据集的装载LSN,并完成对该小数据集的装载具体包括:
取一个小数据集,在源端查询源端数据库的当前LSN以作为装载LSN;
根据小数据集的ROWID区间范围,使用闪回技术对小数据集生成查询语句并执行;
提取查询语句执行的结果集,并将提取的结果集发送到目的端进行保存。
进一步的,所述开启数据同步后,目的端根据操作日志的ROWID定位所属的ROWID区间,通过操作LSN与对应的装载LSN进行对比以实现数据同步的过滤具体包括:
源端捕获源端数据库的操作日志,对所述操作日志解析后将获得的操作信息发送到目的端执行同步;
目的端接收到源端发送过来的操作信息后根据事务ID进行分类管理,当接收到提交操作时,找到提交操作对应的事务准备执行;
目的端依次执行该事务中的每个操作,通过操作对应的表ID和ROWID值定位该操作所属的ROWID区间,以得到对应的装载LSN;
对比该操作所述事务的提交LSN和装载LSN的大小,当提交LSN小于装载LSN时将该操作丢弃,否则将该操作同步到目的端数据库。
进一步的,在通过操作对应的表ID和ROWID值定位该操作所属的ROWID区间时,若未找到对应的区间,则将该操作同步到目的端数据库。
进一步的,所述目的端创建有LOAD_LSN表,用于保存装载过程中提取的结果集数据,其保存的数据包括表ID、装载LSN、START_ROWID和END_ROWID,其中,START_ROWID代表ROWID区间的起始值,END_ROWID代表ROWID区间的终止值,START_ROWID以及END_ROWID中为NULL的行表示表的起始LSN。
另一方面,本发明提供了一种基于ROWID区间的初始化装载设备,具体为:包括至少一个处理器和存储器,至少一个处理器和存储器之间通过数据总线连接,存储器存储能被至少一个处理器执行的指令,指令在被处理器执行后,用于完成第一方面中的基于ROWID区间的初始化装载方法。
与现有技术相比,本发明的有益效果在于:将待装载的结果集进行分割,将整个数据集按照指定的数值,分割为N份小的数据集,然后分别对N份小的数据集进行数据装载。这样一来,获取小的数据集数据的时间,将大大短于整个数据集的数据获取时间,从而避免“快照过旧”的问题,另外,ROWID是数据库的表中的每一行数据都有的一个唯一标识符,使用ROWID作为数据筛选条件,查询效率高,对数据库影响较小。另一方面,本发明记录对每个小数据集进行装载时的装载LSN,用来在同步时与待同步操作的LSN进行对比,来对操作是否需要同步进行筛选,能保证操作涉及的表在源端和目的端数据的一致性。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例中所需要使用的附图作简单地介绍。显而易见地,下面所描述的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例1提供的一种基于ROWID区间的初始化装载方法流程图;
图2为本发明实施例1提供的ROWID组成部分示意图;
图3为本发明实施例1提供的ROWID格式示例图;
图4为本发明实施例1提供的EXTENT的示例图;
图5为本发明实施例1提供的EXTENT第一行以及最后一行示例图;
图6为本发明实施例1提供的EXTENT的表数据组织示例图;
图7为本发明实施例1提供的对EXTENT的排序示例图;
图8为本发明实施例1提供的对EXTENT进行分割的示例图;
图9为本发明实施例1提供的小数据集ROWID区间划分的示例图;
图10为本发明实施例1提供的数据装载的示例图;
图11为本发明实施例2提供的步骤200具体流程图;
图12为本发明实施例2提供的步骤300具体流程图;
图13为本发明实施例2提供的同步操作流程示意图;
图14为本发明实施例2提供数据装载时刻示例图;
图15为本发明实施例3提供的查询时刻示意图;
图16为本发明实施例3提供的闪回时刻说明图;
图17为本发明实施例3提供的闪回时刻确定流程图;
图18为本发明实施例3提供的步骤200具体流程图;
图19为本发明实施例3提供的步骤300具体流程图;
图20为本发明实施例3提供的同步操作流程示意图;
图21为本发明实施例3提供的闪回查询示例图;
图22为本发明实施例4提供的一种基于ROWID区间的初始化装载设备结构示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
本发明是一种特定功能***的体系结构,因此在具体实施例中主要说明各结构模组的功能逻辑关系,并不对具体软件和硬件实施方式做限定。
此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。下面就参考附图和实施例结合来详细说明本发明。
实施例1:
数据同步的源库到目的库表的初始化装载和普通的两个数据库之间表数据的迁移存在很大区别,由于在装载期间可能源表会不断的被第三方应用修改,那么前者就需要考虑装载完成以后开启同步时源和目的表的数据一致性;后者则只需要把当时那一刻的数据镜像复制到目的端就行。所以前者在装载前需要记录下查询结果集对应的当前数据库日志LSN,以便在开启同步以后根据该LSN来过滤掉日志中已经装载的数据修改操作。由于装载以表为单位,所以每个表都会有一个独立的装载LSN,这些LSN会登记在目的端数据同步***中,开启数据同步以后,目的端数据同步***在接收到表的操作日志时,就可以通过操作日志对应事务的提交LSN来识别哪些操作是已经装载过的(事务提交日志LSN小于装载LSN就表明该操作在装载时已可见,不需要再同步),装载过的日志直接丢弃不同步,从而保证了操作涉及的表在源和目的端数据的一致性。
快照过旧的根本原因,是读取数据集的时间过长,导致装载过程中被修改的数据无法找到历史的版本,为保证读取数据的一致性,避免出现脏读,数据库终止应用程序获取数据。为解决该问题,本发明优选实施例提出,将待装载的结果集进行分割,将整个数据集按照指定的数值,分割为N份小的数据集,然后分别对N份小的数据集进行数据装载。获取小的数据集数据的时间,大大短于整个数据集的数据获取时间,从而避免“快照过旧”的问题。
如图1所示,为解决上述技术问题,本发明实施例提供一种基于ROWID区间的初始化装载方法,具体包括如下步骤。
步骤100:按照ROWID大小顺序将表数据集分割成若干个小数据集,并获得相对应的若干个ROWID区间。通过该步骤可以将一个数据多的表数据集分割为多个小的数据集,以方便后续对小数据集进行初始化装载及同步,这样一来,获取小的数据集数据的时间,将大大短于整个数据集的数据获取时间,从而避免“快照过旧”的问题。
步骤200:取一个小数据集,获取小数据集的装载LSN,并完成对该小数据集的装载;重复该步骤直至所有小数据集装载完成。
步骤300:开启数据同步后,目的端根据操作日志的ROWID定位所属的ROWID区间,通过操作LSN与对应的装载LSN进行对比以实现数据同步的过滤。该步骤通过使用ROWID作为数据筛选条件,查询效率高,对数据库影响较小,另外通过操作LSN与对应的装载LSN进行对比,来对操作是否需要同步进行筛选,能保证操作涉及的表在源端和目的端数据的一致性。
对于上述步骤,本优选实施例扩展如下。
首先,本优选实施例的步骤100是使用ROWID对表数据集进行分割。在ORACLE数据库中,ROWID是可唯一识别一行记录的标记,同时,ORACLE数据库中,ROWID信息中包含行数据存储位置,无论表中是否存在索引,使用ROWID作为筛选条件,都可以快速定位到数据行,所以使用ROWID作为数据集的分隔条件,可快速的对表数据集进行分割,同时,使用ROWID来获取小数据集数据,速度也非常快。
如图2所示,为ROWID组成部分示意图,在类ORACLE数据库中,ROWID为18个字节的64进制字符串,字符串内容由文件号、页号、表id和行号组成,其中:表id为数据库对表的内部标识;文件号为数据库对文件的内部标识;数据页是数据库对磁盘文件的内部管理方式,数据库为方便管理,将文件按照页(BLOCK)进行管理,每个页大小为n*1024字节,页号从0开始排序,顺序递增;行号为数据库对数据页中数据的内部标识,BLOCK为n*1024字节大小,一个BLOCK可以存放N(N>1)行表数据,为区分BLOCK中的表数据,数据库对BLOCK中的数据行进行标记,编号从0开始。
上述该类数据库中,ROWID包含数据实际存储的物理位置信息,可根据ROWID计算ROWID对应行记录所在的存储位置,同时,也可能根据存储位置,计算数据的ROWID。
以图3所示的ROWID格式为例,该ROWID=AAASxZAAEAAAACuAAA的行,表示该行数据属于表id为76889的表,该行数据位于第4号文件第174个block的第0行。
由于数据库在给表分配存储时,使用按需分配的原则,即已分配存储空间使用完,才给表分配一个EXTENT存储空间,一个EXTENT为N(N>=8)个连续数据页(BLOCK)。如图4所示,为EXTENT的示例图。
如果新分配的EXTENT位于第4号文件,第一个BLOCK页号为174,EXTENT包含64个BLOCK,BLOCK最大行号为65535,那么,可以计算EXTENT最后一个数据页页号为174+63=237,于是可以计算该EXTENT内数据ROWID范围为[AAASxZAAEAAAACuAAA,AAASxZAAEAAAADtf//]。如图5所示,为EXTENT第一行以及最后一行示例图。
如图6所示,为EXTENT的表数据组织示例图,在这些表中,新分配的存储空间无法保证与之前分配的存储空间连续,表EXTENT之间可能存在其他表的EXTENT,导致表ROWID可能存在较大的跨越。
基于上述情况,本优选实施例对于步骤100(按照ROWID大小顺序将表数据集分割成若干个小数据集,并获得相对应的若干个ROWID区间),可具体扩展为如下步骤。
步骤101:获取表数据集所有的EXTENT的信息,按照EXTENT第一页所在的文件号以及页号,对EXTENT进行排序。如图7所示,为对EXTENT的排序示例图,对于上述类别的数据库,首先获取表所有的EXTENT的信息,然后按照EXTENT第一页(BLOCK0)所在的文件号以及页号进行排序,排序时,以文件号先后顺序(由小到大)为优先进行排序,文件号相同时,再以页号先后顺序(由小到大)进行排序。
步骤102:根据指定的分组数n,将排序好的EXTENT分割成n个小数据集。如图8所示,为对EXTENT进行分割的示例图,本优选实施例以EXTENT0-EXTENTN的表数据为例,将这些数据分割成n个小数据集(也即图中RECORDSET1-RECORDSETn),每个小数据集包括若干个EXTENT。
步骤103:得到每一个小数据集ROWID的起始值ROWIDi,根据起始值ROWIDi划分出每个小数据集的ROWID区间;其中,ROWIDi为第i个小数据集中第一个EXTENT的第一页的第一行生成的ROWID,i∈[1,n],n为小数据集的个数。如图9所示,为小数据集ROWID区间划分的示例图,本优选实施例中,RECORDSET1的起始值为ROWID1,RECORDSETi的起始值为ROWIDi,一直到划分出的第n个小数据集RECORDSETn,其起始值为ROWIDn。这样一来,根据起始值ROWIDi就可以确定如下ROWID区间:若小数据集不是划分出的最后一个小数据集,则该小数据集的ROWID区间为[ROWIDi,ROWIDj),也即图中ROWIDi<=ROWID<ROWIDj,其中,j=i+1;若小数据集是划分出的最后一个小数据集,则该小数据集的ROWID区间为[ROWIDi,ROWIDend],此时的ROWIDi=ROWIDn,也即第n个(最后一个)小数据集的起始值,该区间也即图中ROWIDn<=ROWID<=ROWIDend,其中,ROWIDend为最后一个小数据集中最后一个EXTENT的最后一页的最后一行生成的ROWID。
如图10所示,为数据装载的示例图,可以看出整个装载ROWID范围为[ROWID1,ROWIDend],装载数据时,分别对每个RECORDSET进行装载。图10中将源库表T1数据装载到目的库中,就是根据图9的小数据集ROWID区间划分进行的装置。
以上为本优选实施例中对表数据集划分为若干个小数据集的具体说明,依照上述方式进行划分后,便可以分别对每个小数据集进行装载以及同步处理,这样一来,获取小的数据集数据的时间,将大大短于整个数据集的数据获取时间,从而避免“快照过旧”的问题,另外,ROWID是数据库的表中的每一行数据都有的一个唯一标识符,使用ROWID划分区间,作为数据筛选条件,查询效率高,对数据库影响较小。
在本方案之前,同步初始化碰到“快照过旧”错误时,往往采用调整源端数据库的运行参数,比如扩展回滚段空间或延长回滚段空间释放时间等措施,但是这些措施的实施存在很大的不确定性,因为在生产***调整这些运行参数风险较大,对生产***的影响无法预估,同时调整以后再次装载依然无法避免再次报错。采用本方案可以有效的处理“快照过旧”错误,利用ROWID分割,可以将表的数据集进行细分,当分割后的结果集足够小时,可完全避免快照过旧的问题。
实施例2:
基于上述实施例1中的方法,本实施例2对分割成小数据集后的数据的装载以及同步进行进一步的扩充。
首先,需要在源端数据库及目的端数据库部署同步***,源端数据库同步***从源端数据库读取日志,而目的端数据库同步***则是负责把源端发过来的同步操作应到到目的端数据库。目的端数据同步***在初始化时在目的端创建一张表LOAD_LSN,用来保存同步表的装载LSN,表结构如下:CREATE TABLE LOAD_LSN(OBJID INT,LSN NUMBER(20),START_ROWID VARCHAR(18),END_ROWID VARCHAR(18));其中,OBJID列用来存放装载表的ID,LSN列存放该表在对应ROWID区间的装载LSN,START_ROWID列存放表装载ROWID区间的起始值,END_ROWID列存放表装载ROWID区间的终止值,另外,START_ROWID以及END_ROWID中为NULL的行表示表的起始LSN。(每个表存在一个全局的起始LSN,当START_ROWID和/或END_ROWID为NULL时表示该行记录的是表的全局起始LSN。)
需说明的是,数据装载无需停止源端数据库业务***,在装载数据过程中,表数据也在发生变化,所以,当数据装载完成之后,开启增量数据同步时,同步软件需要区分操作是否需要同步到目的数据库,如果在T时刻对表数据进行了装载,那么T时刻之前的操作,均不应该被同步到目的数据库,T时刻之后的操作需要同步到目的数据库。在ORACLE数据库中,可以对表上S锁,当锁表成功时,说明上锁那个时刻,该表上没有未结束的事务。如果一个表上所有事务都结束,说明此时表数据已经持久化,任何客户端在该表上做相同的查询,结果一致。同时,在ORACLE数据库中,定义了数据库内部时钟(LSN),每一个LSN最多只有一个数据修改产生。数据库对每一个数据修改操作都记录了操作发生时刻的LSN,由此,可以使用LSN及S锁,作为判断增量数据是否需要同步到目的库的依据。
具体的,基于上述描述,本实施例2中可将实施例1中步骤200的“取一个小数据集,获取小数据集的装载LSN,并完成对该小数据集的装载”扩展为如图11所示的步骤:
步骤201:取一个小数据集,对源端数据库中待装载的表上S锁,并在源端查询源端数据库的当前LSN以作为装载LSN。如果上S锁成功,表明此时表上事务均结束,同时,在上S锁未结束前,该表上的数据无法被修改。在上S锁成功的情况下,查询获得装载LSN期间的表中数据不会发生变化。
步骤202:根据小数据集的ROWID区间范围对小数据集生成对应的查询语句并执行。该步骤中,根据ROWID筛选范围(ROWIDi<=ROWID<ROWIDj),对每个RECORDSET生成查询语句SQL_SET,执行SQL_SET便可得到满足ROWID筛选范围的结果集。需说明的是,若小数据集是最后一个(第n个)小数据集,那么ROWID筛选范围应该更新为ROWIDi<=ROWID<=ROWIDend(也即ROWIDn<=ROWID<=ROWIDend)。
步骤203:释放S锁后提取查询语句执行的结果集,并将提取的结果集发送到目的端进行保存。当释放S锁操作完成后,其他客户端/应用可以对表进行数据修改操作,此时,如果数据操作的LSN大于步骤201中获取到的装载LSN,同步软件在同步增量数据时,就会将操作同步到目的数据库;如果数据操作的LSN步骤201中获取到的装载LSN,则数据操作会被丢弃,例如,步骤201之前的数据操作,不需要同步到目的数据库。另外,该步骤提取的结果集数据包括:表ID、装载LSN、START_ROWID和END_ROWID,提取后将这些数据发送到目的端数据同步***,目的端数据同步***把上述信息保存到LOAD_LSN表中,以便对应的表同步时使用。其中,START_ROWID代表ROWID区间的起始值(也即结果集ROWIDi),END_ROWID代表ROWID区间的终止值(也即结果集ROWIDj以及ROWIDend)。START_ROWID以及END_ROWID中为NULL的行表示表的起始LSN。
如图12所示,为本实施例基于上S锁的操作后对步骤300(开启数据同步后,目的端根据操作日志的ROWID定位所属的ROWID区间,通过操作LSN与对应的装载LSN进行对比以实现数据同步的过滤)的扩展,具体扩展步骤如下。
步骤301:源端捕获源端数据库的操作日志,对所述操作日志解析后将获得的操作信息发送到目的端执行同步。该步骤中,还需要在开启同步时将LOAD_LSN表中的数据,以objid为顺序加载到内存,记为GLOBAL_LOAD,源端数据同步***捕获源端数据库的操作日志,解析以后获得操作对应的事务ID、表ID、操作LSN、操作类型和操作数据,并在操作数据中包含了该数据在源表上的ROWID,然后将这些信息发送到目的端执行同步。
步骤302:目的端接收到源端发送过来的操作信息后根据事务ID进行分类管理,当接收到提交操作时,找到提交操作对应的事务准备执行。
步骤303:目的端依次执行该事务中的每个操作,通过操作对应的表ID和ROWID值定位该操作所属的ROWID区间,以得到对应的装载LSN。在通过操作对应的表ID和ROWID值定位该操作所属的ROWID区间时,若未找到对应的区间,则将该操作同步到目的端数据库,这是因为如果没定位出所属的ROWID区间,说明该操作的数据是新增的数据,可以直接将其定为需要同步的操作。另外,在开始定位操作所属的ROWID区间之前,还可以先判断该操作的操作LSN是否小于表的起始LSN,如果小于,则说明该操作在上锁前就可见,不需要同步到目的数据库,可以直接丢弃,否则就需要进一步进行判断,也即开始定位操作所属的ROWID区间以进行下一步判断。
步骤304:对比该操作的操作LSN和装载LSN的大小,当操作LSN小于装载LSN时将该操作丢弃,否则将该操作同步到目的端数据库。操作LSN小于装载LSN时,说明该操作在上S锁前就可见,不需要同步到目的数据库,可以直接丢弃;操作LSN大于装载LSN时,说明该操作是解S锁后的操作,需要同步到目的端数据库。
上述同步操作的步骤以流程图表示的话,如图13所示,开始同步后,先获取操作的表id(tabid),操作LSN(oplsn),操作行的ROWID(lROWID),从GLOBAL_LOAD中获取tabid相关的记录,记为LSN_LST,从LSN_LST中找到START_ROWID为NULL的行,将行中的LSN值记为slsn0(也即表的起始LSN),判断是否oplsn<slsn0,若是则将操作丢弃并结束流程,若否则从GLOBAL_LOAD中,找到lROWID所在ROWID的区间,若未找到对应区间则将操作同步到目的数据库并结束流程,若找到对应区间则获取区间的LSN值,记为RLSN(也即该区间的装载LSN),判断是否RLSN>oplsn,若是则将操作丢弃并结束流程,若否则将操作同步到目的数据库并结束流程。
对于本实施例2的方案,接下来以图14所示的一个具体例子中的数据装载时刻为例进行说明。图14中,R1、RI……Rn分别为ROWID1-ROWIDn的子集,SLSN0为获取表ROWID集的LSN,SLSN1……SLSNn分别为获取子集R1……Rn时的LSN,INS0……INSn分别为用户对装载表的操作。
根据上图中INS0……INSn操作时刻的不同,同步软件对操作的处理结果不同:
INS0:发生在SLSN0之前,该数据在SLSN0时刻是可见的,所以,该操作影响的数据在ROWID1-ROWIDn的数据中,该操作不需要同步到目的数据库。
INS1:操作发生在SLSN0-SLSN1之间,同时,该操作操作的数据行ROWID存在于R1表示的ROWID范围中。由于R1的数据装载是在SLSN1时刻,INS1操作在SLSN1时刻是可见的,所以,该操作不需要同步到目的数据库。
INS2:操作发生在SLSN1之后,同时,该操作操作的数据行的ROWID存在于R1表示的ROWID范围中。由于R1的数据装载是在SLSN1时刻,INS1操作在SLSN1时刻是不可见的,所以,该操作需要同步到目的数据库。
INSm:原理同INS2,操作需要同步到目的数据库。
INSn:操作发生在SLSN0-SLSN1之间,但是,该操作影响的数据不在ROWID0-ROWIDn的数据中,虽然INSn在SLSN1之后可见,但是,装载数据仅装载ROWID0-ROWIDn的数据,所以INSn需要同步到目的数据库中。
综上所述,本实施例通过ROWID区间范围、表的起始LSN、各个ROWID区间所代表的小数据集的装载LSN来与待同步操作的ROWID值、操作LSN值来进行对比,进行筛选,以判断操作是否需要同步,能保证操作涉及的表在源端和目的端数据的一致性。
实施例3:
基于实施例1、实施例2提供的基于ROWID区间的初始化装载方法,本实施例3对分割成小数据集后的数据的装载以及同步进行进一步的扩充。
使用ROWID进行区间数据装载以及同步的方法,也即实施例1中的步骤200-步骤300的详细扩充,已经在实施例2中做了一个详细介绍,不过实施例2中,每个ROWID区间数据装载前,需要对装载表上S锁,来获取装载数据集的版本,但是该操作在生产***中,经常出现上锁不成功,导致数据装载失败的问题。本实施例3针对该问题提出一种方法,在对ROWID区间数据进行装载时,不对装载表进行上锁操作,而是通过数据库闪回技术,读取指定版本的数据集。
在数据库中,由于业务***的操作,导致数据在实时的变化。在一般情况下,数据库返回给应用***的查询结果集,都是从当前可见数据筛选出来的。如图15所示,如果在时刻t1到时刻t2之间,有对数据进行操作,那么t1,t2时刻的可见数据是不一样的,这就导致同一条数据筛选语句,在t1,t2时刻查询的结果集不同。
数据库中,数据操作均以事务为单位进行,如果事务未结束,事务中操作的数据,对于其他数据库连接来说不可见。
同步软件在装载完数据,进行增量数据同步时,需要判断哪些增量数据需要同步,哪些需要丢弃。在数据库中,定义了数据库的内部时间(LSN),同步软件通过获取sql语句的结果集来进行数据装载,sql语句的结果集即为sql语句执行时刻表中的可见数据。同步软件为了获取SQL语句执行时刻的数据,实施例2的处理方法是对表上S锁,如果锁表成功,则在S锁未被释放之前,其他应用程序无法对表数据进行修改,在上锁成功到S锁释放这段时间内,表的数据为静态数据。这种情况下,可以使用装载LSN来判别增量数据同步中,哪些操作需要同步,哪些操作不需要同步;当表上存在未结束的事务时,无法对表上S锁。
如图16所示,该图中存在一个事务,从lsn2时刻开始,在lsn4时刻结束。这种情况下,在当前时间为lsn3时,无法对表tab1上S锁,同理,可以看出从lsn2开始到lsn5,这个期间无法对表上S锁。而数据库的闪回技术,可以让应用查询指定LSN时刻装载表的可见数据,这样,不需要对表上S锁,也可查询当前时间之前的可见数据,可以解决表上锁不成功的问题。图16中,在LSN5时刻,通过闪回技术,可以查询lsn3时刻的表数据,然后在增量同步中,从lsn2开始读取增量数据,这样,可以保证无数据丢失。在这个过程中,需要确定lsn5与lsn2的值,本实施例中,lsn5及lsn2获取的方法流程如图17所示:获取数据库当前LSN(此时为LSN2);查询当前数据库中,tab1中是否存在未提交事务,参照图16的例子,此时存在未提交事务,所以需要获取最早执行未提交事务开始执行时刻LSNt,判断LSNt是否大于当前LSN(LSN2),若不大于则睡眠10s后再回到查询是否存在未提交事务的步骤,一直到LSNt大于LSN2或者表中不存在未提交事务,那么就获取数据库当前LSN(该例子中,此时为LSN5),最后使用快照技术获取LSN5时刻的表tab1的数据。
上述过程中,需要等lsn2之前的所有事务都提交之后,才能进行快照查询,此时可以保证,lsn5时刻的查询结果,包含所有lsn2之前开始的事务的修改,而lsn2之后开始的事务,由增量同步时完成。闪回查询语句如下:select*from t1 as of scn12345;其中as ofscn为闪回查询关键字,12345为闪回查询时刻(lsn)。
基于上述对闪回功能的介绍,对于无需上S锁或上S锁失败的情况,本实施例3对于实施例1中步骤200的“取一个小数据集,获取小数据集的装载LSN,并完成对该小数据集的装载”可扩展为如图18所示的步骤:
步骤211:取一个小数据集,在源端查询源端数据库的当前LSN以作为装载LSN。需说明的是,此时查找到的这个作为装载LSN的当前LSN是经过如图17所示的流程之后,使用快照技术获取表数据时刻的LSN。源端在查询到这个装载LSN后,把表ID、SLSN(装载LSN)、NULL、NULL发送到目的端数据同步***,目的端数据同步***把上述信息保存到LOAD_LSN表中。START_ROWID及END_ROWID为NULL的行,表示表的起始LSN。
步骤212:根据小数据集的ROWID区间范围,使用闪回技术对小数据集生成查询语句并执行。具体的,根据ROWID筛选范围(ROWIDi<=ROWID<ROWIDj,若为最后一个ROWID区间,则范围为ROWIDi<=ROWID<=ROWIDend),使用闪回技术,对RECORDSET生成查询语句SQL_SET,然后执行SQL_SET。
步骤213:提取查询语句执行的结果集,并将提取的结果集发送到目的端进行保存。具体的,提取SQL_SET执行结果集,并将提取结果集发送到目的端,直到结果集提取完成,需说明的是,该步骤提取的结果集是通过闪回技术所找到的可见的数据集。结果集的数据信息包括表ID、装载LSN、START_ROWID和END_ROWID。目的端数据同步***把上述信息保存到LOAD_LSN表中,以便对应的表同步时使用。其中,START_ROWID代表ROWID区间的起始值(也即结果集ROWIDi),END_ROWID代表ROWID区间的终止值(也即结果集ROWIDj以及ROWIDend)。START_ROWID以及END_ROWID中为NULL的行表示表的起始LSN。
如图19所示,为本实施例基于闪回技术操作后对步骤300(开启数据同步后,目的端根据操作日志的ROWID定位所属的ROWID区间,通过操作LSN与对应的装载LSN进行对比以实现数据同步的过滤)的扩展,具体扩展步骤如下。
步骤311:源端捕获源端数据库的操作日志,对所述操作日志解析后将获得的操作信息发送到目的端执行同步。该步骤中,还需要在开启同步时将LOAD_LSN表中的数据,以objid为顺序加载到内存,记为GLOBAL_LOAD,源端数据同步***捕获源端数据库的操作日志,解析以后获得操作对应的事务ID、表ID、操作LSN、操作类型和操作数据,并在操作数据中包含了该数据在源表上的ROWID,然后将这些信息发送到目的端执行同步。
步骤312:目的端接收到源端发送过来的操作信息后根据事务ID进行分类管理,当接收到提交操作时,找到提交操作对应的事务准备执行。
步骤313:目的端依次执行该事务中的每个操作,通过操作对应的表ID和ROWID值定位该操作所属的ROWID区间,以得到ROWID区间对应的装载LSN。在通过操作对应的表ID和ROWID值定位该操作所属的ROWID区间时,若未找到对应的区间,则将该操作同步到目的端数据库,这是因为如果没定位出所属的ROWID区间,说明该操作的数据是新增的数据,可以直接将其定为需要同步的操作。另外,在开始定位操作所属的ROWID区间之前,还可以先判断该操作所属事务的提交LSN是否小于表的起始LSN,如果小于,则说明该操作所属事务在装载时可见,不需要同步到目的数据库,可以直接丢弃,否则就需要进一步进行判断,也即开始定位操作所属的ROWID区间以进行下一步判断。
步骤314:对比该操作所属事务的提交LSN和装载LSN的大小,当提交LSN小于装载LSN时将该操作丢弃,否则将该操作同步到目的端数据库。提交LSN小于装载LSN时,说明该事务在装载时可见,不需要同步到目的数据库,可以直接丢弃;提交LSN大于装载LSN时,说明该事务在装载时不可见,需要同步到目的端数据库。
上述同步操作的步骤以流程图表示的话,如图20所示,开始同步后,先获取操作的表id(tabid),操作所属事务的提交LSN(oplsn),操作行的ROWID(lROWID),从GLOBAL_LOAD中获取tabid相关的记录,记为LSN_LST,从LSN_LST中找到START_ROWID为NULL的行,将行中的LSN值记为slsn0(也即表的起始LSN),判断是否oplsn<slsn0,若是则将操作丢弃并结束流程,若否则从GLOBAL_LOAD中,找到lROWID所在ROWID的区间,若未找到对应区间则将操作同步到目的数据库并结束流程,若找到对应区间则获取区间的LSN值,记为RLSN(也即该区间的装载LSN),判断是否RLSN>oplsn,若是则将操作丢弃并结束流程,若否则将操作同步到目的数据库并结束流程。
对于本实施例3的方案,接下来以图21所示的一个具体的闪回查询例子来进行示例说明。图21中,依次有三个事务,数据装载开始后,同步软件获取到当前数据库LSN为lsn3,此时,第二个事务开始时刻为lsn2,比lsn3小,所以数据装载需要等待第二个事务结束。在lsnt时刻,又产生了一个新事务也即第三个事务,但是lsnt要大于lsn3,所以数据装载不需要等待第三个事务结束。在lsn4时刻,第二个事务结束,此时可利用闪回技术,对表进行数据装载。
数据装载完成后,进行增量数据同步时,同步软件从lsn3开始进行数据捕获,由于第二个事务的结束时刻不大于lsn4,所以所有第二个事务操作均被丢弃;而第三个事务的事务结束时刻比lsn4大,所以,第三个事务的操作需要同步。具体的增量同步示例可参考实施例2中图14的示例,在此不再赘述。
综上所述,本实施例通过ROWID区间范围、表的起始LSN、各个ROWID区间所代表的小数据集的装载LSN来与待同步操作的ROWID值、操作LSN值来进行对比,进行筛选,以判断操作是否需要同步,能保证操作涉及的表在源端和目的端数据的一致性。
实施例4:
在上述实施例1至实施例3提供的基于ROWID区间的初始化装载方法的基础上,本发明还提供了一种可用于实现上述方法的基于ROWID区间的初始化装载设备,如图22所示,是本发明实施例的设备架构示意图。本实施例的基于ROWID区间的初始化装载设备包括一个或多个处理器21以及存储器22。其中,图22中以一个处理器21为例。
处理器21和存储器22可以通过总线或者其他方式连接,图22中以通过总线连接为例。
存储器22作为一种非易失性计算机可读存储介质,可用于存储非易失性软件程序、非易失性计算机可执行程序以及模块,如实施例1至实施例3中的基于ROWID区间的初始化装载方法。处理器21通过运行存储在存储器22中的非易失性软件程序、指令以及模块,从而执行基于ROWID区间的初始化装载设备的各种功能应用以及数据处理,即实现实施例1至实施例3的基于ROWID区间的初始化装载方法。
存储器22可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实施例中,存储器22可选包括相对于处理器21远程设置的存储器,这些远程存储器可以通过网络连接至处理器21。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
程序指令/模块存储在存储器22中,当被一个或者多个处理器21执行时,执行上述实施例1至实施例3中的基于ROWID区间的初始化装载方法,例如,执行以上描述的图1、图11-图12、图18-图19所示的各个步骤。
本领域普通技术人员可以理解实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:只读存储器(ReadOnlyMemory,简写为:ROM)、随机存取存储器(RandomAccessMemory,简写为:RAM)、磁盘或光盘等。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种基于ROWID区间的初始化装载方法,其特征在于,包括:
按照ROWID大小顺序将表数据集分割成若干个小数据集,并获得相对应的若干个ROWID区间;
取一个小数据集,获取小数据集的装载LSN,并完成对该小数据集的装载;重复该步骤直至所有小数据集装载完成;
开启数据同步后,目的端根据操作日志的ROWID定位所属的ROWID区间,通过操作LSN与对应的装载LSN进行对比以实现数据同步的过滤。
2.根据权利要求1所述的基于ROWID区间的初始化装载方法,其特征在于,所述按照ROWID大小顺序将表数据集分割成若干个小数据集,并获得相对应的若干个ROWID区间具体包括:
获取表数据集所有的EXTENT的信息,按照EXTENT第一页所在的文件号以及页号,对EXTENT进行排序;
根据指定的分组数n,将排序好的EXTENT分割成n个小数据集;
得到每一个小数据集ROWID的起始值ROWIDi,根据起始值ROWIDi划分出每个小数据集的ROWID区间;其中,ROWIDi为第i个小数据集中第一个EXTENT的第一页的第一行生成的ROWID,i∈[1,n],n为小数据集的个数。
3.根据权利要求2所述的基于ROWID区间的初始化装载方法,其特征在于,所述根据起始值ROWIDi划分出每个小数据集的ROWID区间具体包括:
若小数据集不是划分出的最后一个小数据集,则该小数据集的ROWID区间为[ROWIDi,ROWIDj);其中,j=i+1;
若小数据集是划分出的最后一个小数据集,则该小数据集的ROWID区间为[ROWIDi,ROWIDend];其中,ROWIDend为最后一个小数据集中最后一个EXTENT的最后一页的最后一行生成的ROWID。
4.根据权利要求2所述的基于ROWID区间的初始化装载方法,其特征在于,所述取一个小数据集,获取小数据集的装载LSN,并完成对该小数据集的装载具体包括:
取一个小数据集,对源端数据库中待装载的表上S锁,并在源端查询源端数据库的当前LSN以作为装载LSN;
根据小数据集的ROWID区间范围对小数据集生成对应的查询语句并执行;
释放S锁后提取查询语句执行的结果集,并将提取的结果集发送到目的端进行保存。
5.根据权利要求4所述的基于ROWID区间的初始化装载方法,其特征在于,所述开启数据同步后,目的端根据操作日志的ROWID定位所属的ROWID区间,通过操作LSN与对应的装载LSN进行对比以实现数据同步的过滤具体包括:
源端捕获源端数据库的操作日志,对所述操作日志解析后将获得的操作信息发送到目的端执行同步;
目的端接收到源端发送过来的操作信息后根据事务ID进行分类管理,当接收到提交操作时,找到提交操作对应的事务准备执行;
目的端依次执行该事务中的每个操作,通过操作对应的表ID和ROWID值定位该操作所属的ROWID区间,以得到对应的装载LSN;
对比该操作的操作LSN和装载LSN的大小,当操作LSN小于装载LSN时将该操作丢弃,否则将该操作同步到目的端数据库。
6.根据权利要求2所述的基于ROWID区间的初始化装载方法,其特征在于,对于无需上S锁或上S锁失败的情况,所述取一个小数据集,获取小数据集的装载LSN,并完成对该小数据集的装载具体包括:
取一个小数据集,在源端查询源端数据库的当前LSN以作为装载LSN;
根据小数据集的ROWID区间范围,使用闪回技术对小数据集生成查询语句并执行;
提取查询语句执行的结果集,并将提取的结果集发送到目的端进行保存。
7.根据权利要求6所述的基于ROWID区间的初始化装载方法,其特征在于,所述开启数据同步后,目的端根据操作日志的ROWID定位所属的ROWID区间,通过操作LSN与对应的装载LSN进行对比以实现数据同步的过滤具体包括:
源端捕获源端数据库的操作日志,对所述操作日志解析后将获得的操作信息发送到目的端执行同步;
目的端接收到源端发送过来的操作信息后根据事务ID进行分类管理,当接收到提交操作时,找到提交操作对应的事务准备执行;
目的端依次执行该事务中的每个操作,通过操作对应的表ID和ROWID值定位该操作所属的ROWID区间,以得到对应的装载LSN;
对比该操作所属事务的提交LSN和装载LSN的大小,当提交LSN小于装载LSN时将该操作丢弃,否则将该操作同步到目的端数据库。
8.根据权利要求5或7所述的基于ROWID区间的初始化装载方法,其特征在于,在通过操作对应的表ID和ROWID值定位该操作所属的ROWID区间时,若未找到对应的区间,则将该操作同步到目的端数据库。
9.根据权利要求1-7任一所述的基于ROWID区间的初始化装载方法,其特征在于,所述目的端创建有LOAD_LSN表,用于保存装载过程中提取的结果集数据,其保存的数据包括表ID、装载LSN、START_ROWID和END_ROWID,其中,START_ROWID代表ROWID区间的起始值,END_ROWID代表ROWID区间的终止值,START_ROWID以及END_ROWID中为NULL的行表示表的起始LSN。
10.一种基于ROWID区间的初始化装载设备,其特征在于:
包括至少一个处理器和存储器,所述至少一个处理器和存储器之间通过数据总线连接,所述存储器存储能被所述至少一个处理器执行的指令,所述指令在被所述处理器执行后,用于完成权利要求1-9中任一项所述的基于ROWID区间的初始化装载方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111534715.1A CN114385260A (zh) | 2021-12-15 | 2021-12-15 | 一种基于rowid区间的初始化装载方法及设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111534715.1A CN114385260A (zh) | 2021-12-15 | 2021-12-15 | 一种基于rowid区间的初始化装载方法及设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114385260A true CN114385260A (zh) | 2022-04-22 |
Family
ID=81196990
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111534715.1A Pending CN114385260A (zh) | 2021-12-15 | 2021-12-15 | 一种基于rowid区间的初始化装载方法及设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114385260A (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2002354424A (ja) * | 2002-03-26 | 2002-12-06 | Toshiba Corp | 情報記録媒体及び情報記録再生装置 |
CN103593449A (zh) * | 2013-11-19 | 2014-02-19 | 华为技术有限公司 | 一种数据库资源回收方法及*** |
CN111414362A (zh) * | 2020-02-28 | 2020-07-14 | 平安科技(深圳)有限公司 | 数据读取方法、装置、设备及存储介质 |
CN113190281A (zh) * | 2021-04-08 | 2021-07-30 | 武汉达梦数据库股份有限公司 | 一种基于rowid区间的初始化装载方法与装置 |
-
2021
- 2021-12-15 CN CN202111534715.1A patent/CN114385260A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2002354424A (ja) * | 2002-03-26 | 2002-12-06 | Toshiba Corp | 情報記録媒体及び情報記録再生装置 |
CN103593449A (zh) * | 2013-11-19 | 2014-02-19 | 华为技术有限公司 | 一种数据库资源回收方法及*** |
CN111414362A (zh) * | 2020-02-28 | 2020-07-14 | 平安科技(深圳)有限公司 | 数据读取方法、装置、设备及存储介质 |
CN113190281A (zh) * | 2021-04-08 | 2021-07-30 | 武汉达梦数据库股份有限公司 | 一种基于rowid区间的初始化装载方法与装置 |
Non-Patent Citations (2)
Title |
---|
尚云峰: "oracle 根据rowid分片", Retrieved from the Internet <URL:《https://blog.csdn.net/u011165335/article/details/80715402》> * |
王中丹;: "ORACLE SQL性能调整", 科技创新导报, no. 15, 21 May 2009 (2009-05-21) * |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11429641B2 (en) | Copying data changes to a target database | |
CN109241175B (zh) | 数据同步方法、装置、存储介质及电子设备 | |
US7133884B1 (en) | Unobtrusive point-in-time consistent copies | |
CN105630863B (zh) | 用于多版本并发提交状态的事务控制块 | |
US10055440B2 (en) | Database table re-partitioning using trigger-based capture and replay | |
US5613113A (en) | Consistent recreation of events from activity logs | |
US9183268B2 (en) | Partition level backup and restore of a massively parallel processing database | |
US7917472B2 (en) | Method, system and computer-readable media for backing up information contained in a database | |
CN109871373B (zh) | 一种数据存储方法和装置、计算机可读存储介质 | |
US8560500B2 (en) | Method and system for removing rows from directory tables | |
US20190034453A1 (en) | Flexible synchronous file system replication | |
CN103460208A (zh) | 用于将数据加载到时态数据仓库的方法和*** | |
EP2380090B1 (en) | Data integrity in a database environment through background synchronization | |
CN112256656B (zh) | 事务回滚方法及装置、数据库、***、计算机存储介质 | |
CN110245134B (zh) | 一种应用于搜索服务的增量同步方法 | |
CN113553313B (zh) | 一种数据迁移方法及***、存储介质、电子设备 | |
US8386541B2 (en) | Dynamic change data capture process | |
US20070088766A1 (en) | Method and system for capturing and storing multiple versions of data item definitions | |
CN114661816B (zh) | 数据同步方法、装置、电子设备、存储介质 | |
JP2016224920A (ja) | Walを用いたデータベースロールバック | |
CN114036226A (zh) | 一种数据同步方法、装置、设备及存储介质 | |
CN115373889A (zh) | 数据同步中的数据比对校验及数据修复的方法及装置 | |
CN114385260A (zh) | 一种基于rowid区间的初始化装载方法及设备 | |
CN115658815A (zh) | 基于cdc实现的数据同步的方法 | |
CN113190281B (zh) | 一种基于rowid区间的初始化装载方法与装置 |
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 |