CN112579336B - 数据库异常修复方法、装置、计算设备及存储介质 - Google Patents

数据库异常修复方法、装置、计算设备及存储介质 Download PDF

Info

Publication number
CN112579336B
CN112579336B CN202011619239.9A CN202011619239A CN112579336B CN 112579336 B CN112579336 B CN 112579336B CN 202011619239 A CN202011619239 A CN 202011619239A CN 112579336 B CN112579336 B CN 112579336B
Authority
CN
China
Prior art keywords
node
page
data type
abnormal
database
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
Application number
CN202011619239.9A
Other languages
English (en)
Other versions
CN112579336A (zh
Inventor
陈明辉
孙奕
王晓晓
张辉极
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Xiamen Meiya Pico Information Co Ltd
Original Assignee
Xiamen Meiya Pico Information Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Xiamen Meiya Pico Information Co Ltd filed Critical Xiamen Meiya Pico Information Co Ltd
Priority to CN202011619239.9A priority Critical patent/CN112579336B/zh
Publication of CN112579336A publication Critical patent/CN112579336A/zh
Application granted granted Critical
Publication of CN112579336B publication Critical patent/CN112579336B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0793Remedial or corrective actions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/21Design, administration or maintenance of databases
    • G06F16/215Improving data quality; Data cleansing, e.g. de-duplication, removing invalid entries or correcting typographical errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/21Design, administration or maintenance of databases
    • G06F16/217Database tuning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2458Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/28Databases characterised by their database models, e.g. relational or object models
    • G06F16/284Relational databases

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Quality & Reliability (AREA)
  • Fuzzy Systems (AREA)
  • Mathematical Physics (AREA)
  • Probability & Statistics with Applications (AREA)
  • Software Systems (AREA)
  • Computational Linguistics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开一种数据库异常修复方法、装置、计算设备及存储介质,该方法包括:获取异常节点以及异常节点的错误信息;当异常节点为第一数据类型时,对异常节点执行跳过处理;当异常节点为第二数据类型时且用户选择跳过处理时,对异常节点执行跳过处理;当异常节点为第二数据类型时且用户选择修复处理,从数据库失联页面表中选出符合当前数据库结构的第一数据类型页面集合、第二数据类型页面集合和脏数据页面集合,并根据这些集合和异常节点的错误信息对所述异常节点执行修复处理;重复上述步骤以遍历所述脏数据页错误信息库的所有异常节点以完成数据库异常修复。根据本发明实施例可以实现一定程度的数据库异常修复,尽可能保证数据库解析的准确性。

Description

数据库异常修复方法、装置、计算设备及存储介质
技术领域
本发明涉及数据库技术领域,特别涉及一种数据库异常修复方法、装置、计算设备及存储介质。
背景技术
SQLite,是一款轻型的数据库,是遵守ACID的关系型数据库管理系统,它包含在一个相对小的C库中。它是D.RichardHipp建立的公有领域项目。它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了。它能够支持Windows/Linux/Unix等等主流的操作系统,同时能够跟很多程序语言相结合,比如Tcl、C#、PHP、Java等,还有ODBC接口,同样比起Mysql、PostgreSQL这两款开源的世界著名数据库管理系统来讲,它的处理速度比他们都快。因此,SQLite数据库的使用越来越广泛,特别是在便携式设备中。
但是,由于便携式设备的稳定性以及其他原因导致SQLite数据库页面页异常以及脏页面,目前对脏页面的检测以及修复研究比较少。目前SQLite数据异常的通用修复方法具有很大的局限性,一般是通过一条条查询出来并写入到新的数据库,但是这种方法的弊端是无法判断数据库异常类型,无法找到数据库异常点,并且遇到异常的数据,查询过程可能会中断了,导致数据库修复过程不完整,经常出现修复完的数据库记录差异很大的情况,从而影响了数据库修复的准确性和全面性。
发明内容
在发明内容部分中引入了一系列简化形式的概念,这将在具体实施例部分中进一步详细说明。本发明的发明内容部分并不意味着要试图限定出所要求保护的技术方案的关键特征和必要技术特征,更不意味着试图确定所要求保护的技术方案的保护范围。
鉴于以上技术问题,本发明提供了一种数据库异常修复方法、装置、计算设备及存储介质,其可以实现一定程度的数据库异常修复,尽可能保证数据库解析的准确性。
根据本发明的一个方面,提供一种数据库异常修复方法,其包括:
从脏数据页错误信息库获取一个异常节点以及所述异常节点的错误信息;
根据所述异常节点的错误信息确定所述异常节点的数据类型,且当所述异常节点为第一数据类型时,对所述异常节点执行跳过处理,所述第一数据类型为数据库搜索树最末端存储数据的节点;
当所述异常节点为第二数据类型时,向用户发出处理方案选择请求,并根据表示用户处理方案选择的输入对所述异常节点进行处理,所述处理方案包括跳过处理和修复处理,所述第二数据类型为数据库搜索树中非最末端的用于存储子节点页面ID和子节点指针的节点;
当表示用户处理方案选择的输入对应于跳过处理时,对所述异常节点执行跳过处理;
当表示用户处理方案选择的输入对应于修复处理时,从数据库失联页面表中选出符合当前数据库结构的第一数据类型页面集合、第二数据类型页面集合和脏数据页面集合;
根据所述异常节点的错误信息、所述第一数据类型页面集合、所述第二数据类型页面集合和所述脏数据页面集合对所述异常节点执行修复处理;
重复上述步骤以遍历所述脏数据页错误信息库的所有异常节点以完成数据库异常修复。
在本发明的一个实施例中,所述错误信息包括脏数据页的页号、页面类型、页面ID和所属层数。
在本发明的一个实施例中,所述根据所述异常节点的错误信息、所述第一数据类型页面集合、所述第二数据类型页面集合和所述脏数据页面集合对所述异常节点执行修复处理,包括:
获取所述第一数据类型页面集合中所述节点的页面ID,并从所述第一数据类型页面集合选出页面ID小于等于所述异常节点的页面ID的节点,形成所述第一数据类型页面子集;
根据所述异常节点的错误信息、所述子集、所述第二数据类型页面集合和所述脏数据页面集合重组所述异常节点的搜索子树。
在本发明的一个实施例中,根据所述异常节点的错误信息、所述子集、所述第二数据类型页面集合和所述脏数据页面集合重组所述异常节点的搜索子树,包括:
当所述异常节点所属层数为倒数第二层时,用所述子集填充所述异常节点;
当所述异常节点所述层数不是倒数第二层时,构造以所述异常节点为根节点的子树。
在本发明的一个实施例中,所述构造以所述异常节点为根节点的子树,包括:
根据所述搜索树结构判断所述异常节点是否能够容纳所述子集中的所有节点;
若所述异常节点能够容纳所述子集中的所有节点,则将所述子集中的节点作为所述异常节点的第一数据类型的子节点,且所述异常节点的页面ID为该子树下层子树最大的页面ID;
若所述异常节点不能够容纳所述子集中的所有节点,则根据所述子集中的节点的页面ID匹配所述第二数据类型页面集合中的节点,构造多个子树;以及根据所述子集中剩余的节点从所述脏数据页面集合选出多个节点构造子树;各个子树第二数据类型的节点的页面ID为该子树下层子树最大的页面ID。
在本发明的一个实施例中,还包括:
将所述子集中的节点从所述第一数据类型页面集合移除;以及
将所述子集中用于构造子树的节点从所述子集中移除。
在本发明的一个实施例中,在执行所述跳过处理时还根据数据库的单元记录格式,将所述异常节点的记录数据修改成空记录。
在本发明的一个实施例中,所述第一数据类型为叶子页,所述第二数据类型为内部页。
在本发明的一个实施例中,所述数据库为SQLite数据库,所述搜索树为B+tree。
根据本发明的另一方面,提供一种数据库异常修复装置,其包括:
节点获取模块,用于从脏数据页错误信息库获取一个异常节点以及所述异常节点的错误信息,并根据所述异常节点的错误信息确定所述异常节点的数据类型,
第一异常处理模块,用于在所述异常节点为第一数据类型时,对所述异常节点执行跳过处理,所述第一数据类型为数据库搜索树最末端存储数据的节点;
第二异常处理模块,用于在所述异常节点为第二数据类型时,向用户发出处理方案选择请求,并根据表示用户处理方案选择的输入对所述异常节点进行处理,所述处理方案包括跳过处理和修复处理,所述第二数据类型为数据库搜索树中非最末端的用于存储子节点页面ID和子节点指针的节点;
所述第一异常处理模块还用于在表示用户处理方案选择的输入对应于跳过处理时,对所述异常节点执行跳过处理;
所述第二异常处理模块还用于在当表示用户处理方案选择的输入对应于修复处理时,从数据库失联页面表中选出符合当前数据库结构的第一数据类型页面集合、第二数据类型页面集合和脏数据页面集合;以及
根据所述异常节点的错误信息、所述第一数据类型页面集合、所述第二数据类型页面集合和所述脏数据页面集合对所述异常节点执行修复处理。
根据本发明的又一方面,提供一种计算设备,所述设备包括:处理器,以及存储有计算机程序指令的存储器;所述处理器读取并执行所述计算机程序指令,以实现根据本发明一方面的所述的数据库异常修复方法。
根据本发明的再一方面,提供一种计算机存储介质,所述计算机存储介质上存储有计算机程序指令,所述计算机程序指令被处理器执行时实现根据本发明一方面的数据库异常修复方法。
根据本发明的数据库异常修复方法、装置、计算设备及存储介质,根据数据库内的搜索树(例如B+tree)结构以及脏数据页异常错误信息,根据异常节点的类型进行不同的修复处理,对于用于存储数据的异常节点执行绕过修复(及跳过处理),而对于用于子节点信息的异常节点可以根据用户要求执行绕过修复或自动修复被截断的搜索树,保证对异常数据库解析的准确性,并且不仅可用于运行时刻的内存中修复,还可以用于磁盘中数据库文件的直接修复。该方法不局限于某一个数据库,对所有SQLite数据库的脏数据页异常修复分析都适用,具有很强的通用性。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例的数据库数据表一个页面的示例性页面结构的示意图;
图2是本发明实施例的数据数据表的搜索树的示意性图示;
图3为根据本发明实施例的数据库异常修复方法的示意性流程图;
图4为根据本发明实施例的异常节点的搜索子树重建方法的示意性流程图;
图5为本发明实施例的数据库异常修复装置的示意性结构框图;以及
图6是本发明实施例提供的一种计算设备的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述。在下文的描述中,给出了大量具体的细节以便提供对本发明更为彻底的理解。然而,对于本领域技术人员来说显而易见的是,本发明实施例可以无需一个或多个这些细节而得以实施。在其他的例子中,为了避免与本发明实施例发生混淆,对于本领域公知的一些技术特征未进行描述。
除非另外具体说明,否则在这些实施例中阐述的部件和步骤的相对布置、数字表达式和数值不限制本发明的范围。同时,应当明白,为了便于描述,附图中所示出的各个部分的尺寸并不是按照实际的比例关系绘制的。
对于相关领域普通技术人员已知的技术、方法和设备可能不作详细讨论,但在适当情况下,所述技术、方法和设备应当被视为授权说明书的一部分。在这里示出和讨论的所有示例中,任何具体值应被解释为仅仅是示例性的,而不是作为限制。因此,示例性实施例的其它示例可以具有不同的值。应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步讨论。
为了使得本发明的目的、技术方案和优点更为明显,下面将参照附图详细描述根据本发明的示例实施例。显然,所描述的实施例仅仅是本发明的一部分实施例,而不是本发明的全部实施例,应理解,本发明不受这里描述的示例实施例的限制。基于本发明中描述的本发明实施例,本领域技术人员在没有付出创造性劳动的情况下所得到的所有其它实施例都应落入本发明的保护范围之内。
SQLite数据库文件是由一系列的数据表组成的,而每张数据表是由一系列的页面组成的,并且这些页面组织由一棵B+tree搜索树来管理,每个B+tree节点对应一个SQLite页面,页面的大小是2的n次方,常见的有1024、2048、4096字节等。其中存放数据的叶子节点称为叶子页,而存放索引的内部节点称为内部页。如图1所示,每个页面由四个部分构成,包括页头、最后页、单元索引和单元内容。其中,页头第0字节是表示页面类型,包括内部页(0X05)和叶子页(0X0D),第1-2字节表示第一个空闲块的起始地址(记为FF_Offset),第3-4字节表示页面的单元数,第5-6字节表示单元内容区的起始地址(记为FC_Offset),第7字节表示碎片字节数。“最后页”字段仅内部页专用,是指内部页最后一个子节点的页码。
B+tree搜索树页面内部以单元(cell)为单位来组织数据,一个单元包含一个(或部分,当使用溢出页时)payload(也称为B+tree记录数据),当页面为内部页时,单元内容保存的是子页的地址以及key,而当页面为叶子页时,单元内容保存的是数据表的数据。页面检测分析:
如上述所描述,SQLite数据表的页面通过B+tree来组织起来的,页面分为内部页和叶子页,其中B+tree的某些特点虽然在构建阶段会使用,而查询使用阶段却不会完全遵循,但是以下2个基本特点却会完全遵循的:1)数据记录都存放在叶子页,内部页只存储键值;2)所有叶子页节点都在同一层。
另外,SQLite数据表内部页和叶子页都必须符合其页面格式规则,比如以下列举三个页面格式规则,相关规则可以根据需要继续扩展:
内部页以0X05开头,叶子页以0X0D开头;
FF_Offset≤page_size;
FC_Offset≤page_size;
所以对于脏页面的检测,需要满足的条件分为以下两种情况:
若页面不符合SQLite数据表内部页和叶子页页面格式规则,直接认定为脏数据源;
若页面符合SQLite数据表内部页和叶子页页面格式规则,需要符合以下条件:
该节点的类型(内部页/叶子页)与兄弟节点的类型必须一致;
数据只存储在B+tree的叶子页,也就是最末端一层。
对数据库脏页面的检测,可以直接在文件中检测,也可以选择在运行时刻的内存中检测,两种检测方式类似,但是文件检测方式更具有通用性。
如上所述,SQLite数据库文件的页面组织由一棵B+tree搜索树来管理,每个B+tree节点对应一个SQLite页面,B+tree搜索树的结构示例如图2所示。其中,最末端存放数据的叶子节点称为叶子页,叶子页中存储若干条数据记录,而上面两层的节点成为内部页,只存放子节点ID(页ID)和子节点指针(页号)。因此,脏数据页主要有两种情况:1)叶子页脏掉;2)内部页脏掉。
对于第一种情况,影响范围只是一页数据,影响比较小;对于第二种情况,影响比较大,因为该内部页原来指向的子节点不一定是脏掉的,而内部页脏掉会导致成百上千的子节点失连。
基于此,脏数据页(即脏页面)修复的思路为:
首先,本发明实施例假定脏数据页异常详细信息表(记为nSet)已知(其可以根据前述脏页面检测原理获取),表中每条信息至少包括脏数据页的页号、页面类型、页ID和所属层数,记为[pgno,page_type,page_id,page_level]。
由于脏数据页原本的页面可能是叶子页,也可能内部页,所以针对两种类型的脏数据页,需要有两种不同的修复方式:
叶子页:page_type为叶子页,由于只影响当前页面有限的数据,并且一旦页面脏掉无法完全修复,一般只能选择异常绕过,保证数据库的正常解析。
内部页:page_type为内部页,由于影响着较多的数据,中间可能涉及成百上千的页面节点,而这些页面节点不一定是脏页面,此时有两种修复方式:
一,选择快速的异常绕过方案,保证数据库的正常解析。
二,除了保证数据库的正常解析外,还可以修复被截断的B+tree,尽可能保证对异常数据库解析的完整性:从数据库失联(不被任何树或链表管理)的页面节点筛选出符合当前数据表结构的叶子页面集合、内部页面集合和脏数据页面集合,分别记为pSet、ipSet和npSet,根据页ID(page_id)、pSet、ipSet和npSet来修复当前内部页,但是当nSet中涉及多个数据表的内部页,且这些数据表的结构一样的情况下,可能导致修复不够准确,所以只能做到尽量修复。
基于上述分析,对于脏数据页异常的数据库,在已知异常数据相关的错误详情的情况下,可以快速地绕过异常数据,保证数据库的正常解析;并且除了保证数据库的正常解析,还可以修复被截断的B+tree树,保证对异常数据库解析的准确性。
当然,不管采用哪种修复方案,我们可以选择在文件中修复,也可以选择在运行时刻的内存中临时修复,两种修复方式类似,但是文件修复方式更具有通用性,所以本实施例中我们仅以文件中修复为例来做详细描述。
本发明实施例基于以上思想,提供了一种数据库异常修复方法、装置、计算设备及存储介质,其能够实现数据库脏页面的检测,快速准确地检测到所有脏页面,下面结合附图进行详细描述。
首先对本发明实施例所提供的数据库异常修复方法进行介绍。
图3为根据本发明实施例的数据库异常修复方法100的示意性流程图。
请参考图3,本发明实施例公开的数据库异常修复方法100,包括:
步骤S101,开始。
步骤S102,从脏数据页错误信息库获取一个异常节点以及所述异常节点的错误信息。
脏数据页错误信息库可以根据前述脏页面检测原理获取。
在本发明的一个实施例中,所述错误信息包括脏数据页的页号、页面类型、页面ID和所属层数。所述页面类型包括第一数据类型和第二数据类型。所述第一数据类型为数据库搜索树最末端存储数据的节点。所述第二数据类型为数据库搜索树中非最末端的用于存储子节点页面ID和子节点指针的节点。
在本发明的一个实施例中,所述数据库为SQLite数据库,所述搜索树为B+tree。所述第一数据类型为叶子页,所述第二数据类型为内部页。
应当理解,虽然在本发明实施例中,以SQLite数据库和B+tree搜索树为例进行说明,但是本发明实施例提供的数据库异常修复方法也可以适用于其他类似的数据库和搜索树。
步骤S103,根据所述异常节点的错误信息确定所述异常节点的数据类型。
即根据错误信息中表示页面类型的数据可以确定异常节点属于第一数据类型还是第二数据类型。当所述异常节点属于第一数据类型时,方法100继续至S104。当所述异常节点属于第二数据类型时,方法100继续至S105。
步骤S104,当所述异常节点为第一数据类型时,对所述异常节点执行跳过处理。
这是因为第一数据类型的节点为用于存储数据的节点(例如叶子页节点),其一旦变为脏页面就无法完全修复,一般只能选择异常绕过(即跳过处理),来保证数据库的正常解析。
在本发明实施例中,在执行所述跳过处理时还根据数据库的单元记录格式,将所述异常节点的记录数据修改成空记录(例如把每个字段都放空)。
步骤S105,当所述异常节点为第二数据类型时,向用户发出处理方案选择请求,并根据表示用户处理方案选择的输入对所述异常节点进行处理,所述处理方案包括跳过处理和修复处理。
即所述异常节点为第二数据类型时,则向用户发出处理方案选择请求,并向用户提供可选择的处理方案,然后根据用户选择的处理方案对异常节点进行处理。
在本发明实施例中,所述处理方案包括跳过处理和修复处理。
当表示用户处理方案选择的输入对应于跳过处理时,即用户选择跳过处理时则方法100继续至S106。当表示用户处理方案选择的输入对应于修复处理时,即用户选择修复处理时,方法100继续至S107。
应当理解,在向户发出处理方案选择请求时,请求信息包括可选择的处理方案,每种处理方案都不影响数据库的正常解析或不会导致数据库异常退出。
步骤S106,对所述异常节点执行跳过处理。
通过执行跳过处理来保证对后数据库后续节点的正常解析,而不是退出数据库。
在本发明实施例中,在执行跳过处理的同时还根据数据库的单元记录格式,将异常节点的记录数据修改成空记录(例如把每个字段都放空)。
步骤S107,当表示用户处理方案选择的输入对应于修复处理时,从数据库失联页面表中选出符合当前数据库结构的第一数据类型页面集合、第二数据类型页面集合和脏数据页面集合。
数据库失联页面表中有数据库各种失联节点的信息。需要说明的是失联的节点并一定都是脏页面,也可能是由于其他原因导致失联的节点。
当表示用户处理方案选择的输入对应于修复处理时,从数据库失联页面表中选出符合当前数据库结构的第一数据类型页面集合pSet、第二数据类型页面集合ipSet和脏数据页面集合npSet。
步骤S108,根据所述异常节点的错误信息、所述第一数据类型页面集合、所述第二数据类型页面集合和所述脏数据页面集合对所述异常节点执行修复处理。
根据所述异常节点的错误信息、所述第一数据类型页面集合、所述第二数据类型页面集合和所述脏数据页面集合对所述异常节点执行修复处理可以通过下述步骤。
首先,获取所述第一数据类型页面集合pSet中所述节点的页面ID,并从所述第一数据类型页面集合pSet选出页面ID小于等于所述异常节点的页面ID的节点,形成所述第一数据类型页面子集pSet1,并将这些节点从pSet中移除。即,计算pSet中每个节点的page_id,并且根据page_id从小到大的顺序对pSet中的进行排序,从pSet中筛选出page_id≤Node.page_id的节点pSet1,并将这些节点从pSet中移除。
然后,根据所述异常节点的错误信息、所述子集pSet1、所述第二数据类型页面集合ipSet和所述脏数据页面集合npSet重组所述异常节点的搜索子树。
至于根据所述异常节点的错误信息、所述子集pSet1、所述第二数据类型页面集合ipSet和所述脏数据页面集合npSet重组所述异常节点的搜索子树具体过程在下文进行描述,在此不做赘述。
步骤S109,判断脏数据页错误信息库中是否还存在没有处理的异常节点。
如果存在,则方法100返回至S102,继续下一个节点的检测。即,当完成S101-S108之后,则重复上述步骤以遍历所述脏数据页错误信息库的所有异常节点以完成数据库异常修复。
反之则方法100继续至S110,结束。
S110,结束。
即完成了当前脏数据页错误信息库中所有异常节点的修复。
下面结合图4对根据所述异常节点的错误信息、所述子集pSet1、所述第二数据类型页面集合ipSet和所述脏数据页面集合npSet重组所述异常节点的搜索子树的过程进行描述。
图4为根据本发明实施例的异常节点的搜索子树重建方法200的示意性流程图。
请参考图4,本发明实施例的异常节点的搜索子树重建方法200,包括:
步骤S201,根据异常节点的错误信息,确定异常节点的所属层数。
即根据异常节点的错误信息中所属层数的信息(page_level的信息),确定异常节点的所属层数。
当异常节点属于倒数第二层时,则方法200继续至S202;当异常节点不属于倒数第二层时,则方法200继续至S203
步骤S202,当所述异常节点所属层数为倒数第二层时,用所述子集填充所述异常节点。
当所述异常节点所属层数为倒数第二层时,表示异常节点的子节点都是第一数据类型(即叶子页),此时所述子集pSet1中的节点可以用作异常节点的叶子页,因此用所述子集填充所述异常节点来重组异常节点的搜索子树。此时子树的深度为2。
应当理解,所述子集pSet1中的节点未必都是异常节点正确的子节点,这里是实现对异常节点一定程度的修复。
S203,当所述异常节点所述层数不是倒数第二层时,构造以所述异常节点为根节点的子树。
当所述异常节点所述层数不是倒数第二层时,表示异常节点的子节点还包括第二数据类型的节点(即内部页),此时需要构造以所述异常节点为根节点的子树,该子树的深度大于等于2。
S204,根据所述搜索树结构判断所述异常节点是否能够容纳所述子集中的所有节点。
当在S203中确定构造以所述异常节点为根节点的子树之后,则在S204中,根据所述异常节点的信息判断所述异常节点是否能够容纳所述子集中的所有节点。
搜索树结构可以包括各第一数据类型节点和第二数据类型节点的大小,以及节点和子节点的关系,因此可以根据搜索树结构判断所述异常节点是否能够容纳所述子集中的所有节点。当然,也可以采用其他方法判断。
作为一个示例,以图2所示的示例搜索树为例,假如子集pSet1的节点的页面ID为16个,且最大的数值位61,则根据内部页能存储的子节点的个数便可以判断异常节点是否能够所述子集中的所有节点。
当所述异常节点能够容纳所述子集中的所有节点时,则方法200继续至S205,反之则继续至S206。
S205,若所述异常节点能够容纳所述子集中的所有节点,则将所述子集中的节点作为所述异常节点的第一数据类型的子节点,且所述异常节点的页面ID为该子树下层子树最大的页面ID。
若所述异常节点能够容纳所述子集中的所有节点,则表示所述子集中的所有节点都可以作为该异常节点底层的节点。此时,可以根据搜索树结构以及所述子集中的所有节点的信息便可以构建以所述异常节点为根节点的子树。具体地,将所述子集中的节点作为所述异常节点的第一数据类型的子节点,且所述异常节点的页面ID为该子树下层子树最大的页面ID。以图2为例,第二层每个节中的页面ID为其子节点中的最大页面ID。
S206,若所述异常节点不能够容纳所述子集中的所有节点,则根据所述子集中的节点的页面ID匹配所述第二数据类型页面集合中的节点,构造多个子树;以及根据所述子集中剩余的节点从所述脏数据页面集合选出多个节点构造子树;各个子树第二数据类型的节点的页面ID为该子树下层子树最大的页面ID。
若所述异常节点不能够容纳所述子集中的所有节点,则表示所述子集中的所有节点不能都作为该异常节点底层的节点。
此时,可以从所述子集中选取部分节点来构建异常节点的子树。例如,可以根据所述子集pSet中的节点的页面ID匹配所述第二数据类型页面集合中ipSet的节点,构造多个子树。即从第二数据类型页面集合中ipSet中选择页面ID与pSet中的节点的页面ID匹配的节点作为子树的第二数据类型的节点来构建子树。以图2所示为例,假如第三层的节点为pSet1中的节点,则可以从ipSet中选择页面ID可以作为这些节点上层节点或更上层节点的节点来一起构建子树。
此外,将pSet1中用于构建子树的节点从pSet1移除。
进一步地,还可以根据所述子集中剩余的节点从所述脏数据页面集合选出多个节点构造子树。
即,根据pSet1中剩下的节点从npSet中挑选若干节点构造子树,从npSet中选择合适的内部页进行构建子树。
此外,前述类似还将用于构建子树节点从pSet1中移除。
S207,将S206中构造的子树根节点插入所述子集中。
即,重建完子树的异常节点。
根据本发明的数据库异常修复方法,根据数据库内的搜索树(例如B+tree)结构以及脏数据页异常错误信息,根据异常节点的类型进行不同的修复处理,对于用于存储数据的异常节点执行绕过修复(及跳过处理),而对于用于子节点信息的异常节点可以根据用户要求执行绕过修复或自动修复被截断的搜索树,保证对异常数据库解析的准确性,并且不仅可用于运行时刻的内存中修复,还可以用于磁盘中数据库文件的直接修复。该方法不局限于某一个数据库,对所有SQLite数据库的脏数据页异常修复分析都适用,具有很强的通用性。
图5为根据本发明实施例的数据库异常修复装置的示意性结构框图。下面结合图5对根据本发明实施例的数据库异常修复装置500进行描述。
请参考图5,根据本发明实施例的数据库异常修复装置500包括节点获取模块510、第一异常处理模块520和第二异常处理模块530。
节点获取模块510用于从脏数据页错误信息库获取一个异常节点以及所述异常节点的错误信息,并根据所述异常节点的错误信息确定所述异常节点的数据类型。节点获取模块510用于执行结合图3描述的数据库异常修复方法中的步骤S102-S103,该过程的详细描述参见前述结合图3的描述,在此不再赘述。
第一异常处理模块520用于在所述异常节点为第一数据类型时,对所述异常节点执行跳过处理,所述第一数据类型为数据库搜索树最末端存储数据的节点。所述第一异常处理模块520还用于在表示用户处理方案选择的输入对应于跳过处理时,对所述异常节点执行跳过处理。第一异常处理模块520用于执行结合图3描述的数据库异常修复方法中的步骤S104,或S106,该过程的详细描述参见前述结合图3的描述,在此不再赘述。
第二异常处理模块530用于在所述异常节点为第二数据类型时,向用户发出处理方案选择请求,并根据表示用户处理方案选择的输入对所述异常节点进行处理,所述处理方案包括跳过处理和修复处理,所述第二数据类型为数据库搜索树中非最末端的用于存储子节点页面ID和子节点指针的节点。所述第二异常处理模块530还用于在当表示用户处理方案选择的输入对应于修复处理时,从数据库失联页面表中选出符合当前数据库结构的第一数据类型页面集合、第二数据类型页面集合和脏数据页面集合;以及根据所述异常节点的错误信息、所述第一数据类型页面集合、所述第二数据类型页面集合和所述脏数据页面集合对所述异常节点执行修复处理。第二异常处理模块530用于执行结合图3描述的数据库异常修复方法中的步骤S105、S107-S108,以及执行结合图4描述的异常节点的搜索子树重建方法中的步骤S201-S207,该过程的详细描述参见前述结合图2或图3的描述,在此不再赘述。
图5所示数据库异常修复装置500中的各个模块/单元具有实现图3-图4中各个步骤的功能,并能达到其相应的技术效果,为简洁描述,在此不再赘述。
图6示出了本发明实施例提供的计算设备的硬件结构示意图。
计算设备600可以包括处理器601以及存储有计算机程序指令的存储器602。
具体地,上述处理器601可以包括中央处理器(Central Processing Unit,CPU),或者特定集成电路(Application Specific Integrated Circuit,ASIC),或者可以被配置成实施本发明实施例的一个或多个集成电路。
存储器602可以包括用于数据或指令的大容量存储器。举例来说而非限制,存储器602可包括硬盘驱动器(Hard Disk Drive,HDD)、软盘驱动器、闪存、光盘、磁光盘、磁带或通用串行总线(Universal Serial Bus,USB)驱动器或者两个或更多个以上这些的组合。在一个实例中,存储器602可以包括可移除或不可移除(或固定)的介质,或者存储器602是非易失性固态存储器。存储器602可在综合网关容灾设备的内部或外部。
在一个实例中,存储器602可以是只读存储器(Read Only Memory,ROM)。在一个实例中,该ROM可以是掩模编程的ROM、可编程ROM(PROM)、可擦除PROM(EPROM)、电可擦除PROM(EEPROM)、电可改写ROM(EAROM)或闪存或者两个或更多个以上这些的组合。
存储器602可以包括只读存储器(ROM),随机存取存储器(RAM),磁盘存储介质设备,光存储介质设备,闪存设备,电气、光学或其他物理/有形的存储器存储设备。因此,通常,存储器包括一个或多个编码有包括计算机可执行指令的软件的有形(非暂态)计算机可读存储介质(例如,存储器设备),并且当该软件被执行(例如,由一个或多个处理器)时,其可操作来执行参考根据本公开的一方面的方法所描述的操作。
处理器601通过读取并执行存储器602中存储的计算机程序指令,以实现图3所示实施例中的方法/步骤S101至S110,图3所示实施例中的方法/步骤S201至S207,并达到图3至图4所示实例执行其方法/步骤达到的相应技术效果,为简洁描述在此不再赘述。
处理器601通过读取并执行存储器602中存储的计算机程序指令,以实现图5所示实施例中的数据库异常修复装置500以及节点获取模块510、第一异常处理模块520和第二异常处理模块530,并达到图5所示实例中的装置所达到的相应技术效果,为简洁描述在此不再赘述。
在一个示例中,计算设备600还可包括通信接口603和总线610。其中,如图6所示,处理器601、存储器602、通信接口603通过总线610连接并完成相互间的通信。
通信接口603,主要用于实现本发明实施例中各模块、装置、单元和/或设备之间的通信。
总线610包括硬件、软件或两者,将在线数据流量计费设备的部件彼此耦接在一起。举例来说而非限制,总线可包括加速图形端口(Accelerated Graphics Port,AGP)或其他图形总线、增强工业标准架构(Extended Industry Standard Architecture,EISA)总线、前端总线(Front Side Bus,FSB)、超传输(Hyper Transport,HT)互连、工业标准架构(Industry Standard Architecture,ISA)总线、无限带宽互连、低引脚数(LPC)总线、存储器总线、微信道架构(MCA)总线、外围组件互连(PCI)总线、PCI-Express(PCI-X)总线、串行高级技术附件(SATA)总线、视频电子标准协会局部(VLB)总线或其他合适的总线或者两个或更多个以上这些的组合。在合适的情况下,总线610可包括一个或多个总线。尽管本发明实施例描述和示出了特定的总线,但本发明考虑任何合适的总线或互连。
该计算设备600可以数据库异常修复算法执行本发明实施例中的数据库异常修复方法,从而实现结合图3至图4描述的数据库异常修复方法。
此外,根据本发明实施例,还提供了一种存储介质,在所述存储介质上存储了程序指令,在所述程序指令被计算机或处理器运行时用于执行本发明实施例的数据库异常修复方法的相应步骤,并且用于实现根据本发明实施例的数据库异常修复装置的相应单元或模块。所述存储介质例如可以包括个人计算机的硬盘、只读存储器(ROM)、可擦除可编程只读存储器(EPROM)、便携式紧致盘只读存储器(CD-ROM)、USB存储器、或者上述存储介质的任意组合。所述计算机可读存储介质可以是一个或多个计算机可读存储介质的任意组合。
在一个实施例中,所述计算机程序指令在被计算机运行时可以实现根据本发明实施例的数据库异常修复装置中的各个功能模块,并且/或者可以执行根据本发明实施例的数据库异常修复方法。
在一个实施例中,所述计算机程序指令在被计算机运行时执行以下步骤:从脏数据页错误信息库获取一个异常节点以及所述异常节点的错误信息;根据所述异常节点的错误信息确定所述异常节点的数据类型,且当所述异常节点为第一数据类型时,对所述异常节点执行跳过处理,所述第一数据类型为数据库搜索树最末端存储数据的节点;当所述异常节点为第二数据类型时,向用户发出处理方案选择请求,并根据表示用户处理方案选择的输入对所述异常节点进行处理,所述处理方案包括跳过处理和修复处理,所述第二数据类型为数据库搜索树中非最末端的用于存储子节点页面ID和子节点指针的节点;当表示用户处理方案选择的输入对应于跳过处理时,对所述异常节点执行跳过处理;当表示用户处理方案选择的输入对应于修复处理时,从数据库失联页面表中选出符合当前数据库结构的第一数据类型页面集合、第二数据类型页面集合和脏数据页面集合;根据所述异常节点的错误信息、所述第一数据类型页面集合、所述第二数据类型页面集合和所述脏数据页面集合对所述异常节点执行修复处理;重复上述步骤以遍历所述脏数据页错误信息库的所有异常节点以完成数据库异常修复。
根据本发明实施例的数据库异常修复方法中的各模块可以通过根据本发明实施例的数据库异常修复方法的电子设备、服务器、系统的处理器运行在存储器中存储的计算机程序指令来实现,或者可以在根据本发明实施例的计算机程序产品的计算机可读存储介质中存储的计算机指令被计算机运行时实现。
根据本发明的数据库异常修复方法、装置、计算设备及存储介质,根据数据库内的搜索树(例如B+tree)结构以及脏数据页异常错误信息,根据异常节点的类型进行不同的修复处理,对于用于存储数据的异常节点执行绕过修复(及跳过处理),而对于用于子节点信息的异常节点可以根据用户要求执行绕过修复或自动修复被截断的搜索树,保证对异常数据库解析的准确性,并且不仅可用于运行时刻的内存中修复,还可以用于磁盘中数据库文件的直接修复。该方法不局限于某一个数据库,对所有SQLite数据库的脏数据页异常修复分析都适用,具有很强的通用性。
尽管这里已经参考附图描述了示例实施例,应理解上述示例实施例仅仅是示例性的,并且不意图将本发明的范围限制于此。本领域普通技术人员可以在其中进行各种改变和修改,而不偏离本发明的范围和精神。所有这些改变和修改意在被包括在所附权利要求所要求的本发明的范围之内。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
在本申请所提供的几个实施例中,应该理解到,所揭露的设备和方法,可以通过其它的方式实现。例如,以上所描述的设备实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个设备,或一些特征可以忽略,或不执行。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
类似地,应当理解,为了精简本发明并帮助理解各个发明方面中的一个或多个,在对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该本发明的的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如相应的权利要求书所反映的那样,其发明点在于可以用少于某个公开的单个实施例的所有特征的特征来解决相应的技术问题。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。
本领域的技术人员可以理解,除了特征之间相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(DSP)来实现根据本发明实施例的物品分析设备中的一些模块的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的装置程序(例如,计算机程序和计算机程序产品)。这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。
应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。
以上所述,仅为本发明的具体实施方式或对具体实施方式的说明,本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。本发明的保护范围应以权利要求的保护范围为准。

Claims (12)

1.一种数据库异常修复方法,其特征在于,包括:
从脏数据页错误信息库获取一个异常节点以及所述异常节点的错误信息;
根据所述异常节点的错误信息确定所述异常节点的数据类型,且当所述异常节点为第一数据类型时,对所述异常节点执行跳过处理,所述第一数据类型为数据库搜索树最末端存储数据的节点;
当所述异常节点为第二数据类型时,向用户发出处理方案选择请求,并根据表示用户处理方案选择的输入对所述异常节点进行处理,所述处理方案包括跳过处理和修复处理,所述第二数据类型为数据库搜索树中非最末端的用于存储子节点页面ID和子节点指针的节点;
当表示用户处理方案选择的输入对应于跳过处理时,对所述异常节点执行跳过处理;
当表示用户处理方案选择的输入对应于修复处理时,从数据库失联页面表中选出符合当前数据库结构的第一数据类型页面集合、第二数据类型页面集合和脏数据页面集合;
根据所述异常节点的错误信息、所述第一数据类型页面集合、所述第二数据类型页面集合和所述脏数据页面集合对所述异常节点执行修复处理;
重复上述步骤以遍历所述脏数据页错误信息库的所有异常节点以完成数据库异常修复。
2.根据权利要求1所述的方法,其特征在于,所述错误信息包括脏数据页的页号、页面类型、页面ID和所属层数。
3.根据权利要求2所述的方法,其特征在于,所述根据所述异常节点的错误信息、所述第一数据类型页面集合、所述第二数据类型页面集合和所述脏数据页面集合对所述异常节点执行修复处理,包括:
获取所述第一数据类型页面集合中所述节点的页面ID,并从所述第一数据类型页面集合选出页面ID小于等于所述异常节点的页面ID的节点,形成所述第一数据类型页面子集;
根据所述异常节点的错误信息、所述子集、所述第二数据类型页面集合和所述脏数据页面集合重组所述异常节点的搜索子树。
4.根据权利要求3所述的方法,其特征在于,根据所述异常节点的错误信息、所述子集、所述第二数据类型页面集合和所述脏数据页面集合重组所述异常节点的搜索子树,包括:
当所述异常节点所属层数为倒数第二层时,用所述子集填充所述异常节点;
当所述异常节点所属 层数不是倒数第二层时,构造以所述异常节点为根节点的子树。
5.根据权利要求4所述的方法,其特征在于,所述构造以所述异常节点为根节点的子树,包括:
根据搜索树结构判断所述异常节点是否能够容纳所述子集中的所有节点;
若所述异常节点能够容纳所述子集中的所有节点,则将所述子集中的节点作为所述异常节点的第一数据类型的子节点,且所述异常节点的页面ID为该子树下层子树最大的页面ID;
若所述异常节点不能够容纳所述子集中的所有节点,则根据所述子集中的节点的页面ID匹配所述第二数据类型页面集合中的节点,构造多个子树;以及根据所述子集中剩余的节点从所述脏数据页面集合选出多个节点构造子树;各个子树第二数据类型的节点的页面ID为该子树下层子树最大的页面ID。
6.根据权利要求5所述的方法,其特征在于,还包括:
将所述子集中的节点从所述第一数据类型页面集合移除;以及
将所述子集中用于构造子树的节点从所述子集中移除。
7.根据权利要求1-6中任一项所述的方法,其特征在于,
在执行所述跳过处理时还根据数据库的单元记录格式,将所述异常节点的记录数据修改成空记录。
8.根据权利要求1-6中任一项所述的方法,其特征在于,所述第一数据类型为叶子页,所述第二数据类型为内部页。
9.根据权利要求1-6中任一项所述的方法,其特征在于,所述数据库为SQLite数据库,所述搜索树为B+tree。
10.一种数据库异常修复装置,其特征在于,包括:
节点获取模块,用于从脏数据页错误信息库获取一个异常节点以及所述异常节点的错误信息,并根据所述异常节点的错误信息确定所述异常节点的数据类型;
第一异常处理模块,用于在所述异常节点为第一数据类型时,对所述异常节点执行跳过处理,所述第一数据类型为数据库搜索树最末端存储数据的节点;
第二异常处理模块,用于在所述异常节点为第二数据类型时,向用户发出处理方案选择请求,并根据表示用户处理方案选择的输入对所述异常节点进行处理,所述处理方案包括跳过处理和修复处理,所述第二数据类型为数据库搜索树中非最末端的用于存储子节点页面ID和子节点指针的节点;
所述第一异常处理模块还用于在表示用户处理方案选择的输入对应于跳过处理时,对所述异常节点执行跳过处理;
所述第二异常处理模块还用于在当表示用户处理方案选择的输入对应于修复处理时,从数据库失联页面表中选出符合当前数据库结构的第一数据类型页面集合、第二数据类型页面集合和脏数据页面集合;以及
根据所述异常节点的错误信息、所述第一数据类型页面集合、所述第二数据类型页面集合和所述脏数据页面集合对所述异常节点执行修复处理。
11.一种计算设备,其特征在于,所述设备包括:处理器,以及存储有计算机程序指令的存储器;所述处理器读取并执行所述计算机程序指令,以实现如权利要求1-9中的任意一项所述的数据库异常修复方法。
12.一种计算机存储介质,其特征在于,所述计算机存储介质上存储有计算机程序指令,所述计算机程序指令被处理器执行时实现如权利要求1-9中的任意一项所述的数据库异常修复方法。
CN202011619239.9A 2020-12-31 2020-12-31 数据库异常修复方法、装置、计算设备及存储介质 Active CN112579336B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011619239.9A CN112579336B (zh) 2020-12-31 2020-12-31 数据库异常修复方法、装置、计算设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011619239.9A CN112579336B (zh) 2020-12-31 2020-12-31 数据库异常修复方法、装置、计算设备及存储介质

Publications (2)

Publication Number Publication Date
CN112579336A CN112579336A (zh) 2021-03-30
CN112579336B true CN112579336B (zh) 2022-04-22

Family

ID=75144776

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011619239.9A Active CN112579336B (zh) 2020-12-31 2020-12-31 数据库异常修复方法、装置、计算设备及存储介质

Country Status (1)

Country Link
CN (1) CN112579336B (zh)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5806065A (en) * 1996-05-06 1998-09-08 Microsoft Corporation Data system with distributed tree indexes and method for maintaining the indexes
CN102289526A (zh) * 2011-09-29 2011-12-21 深圳市万兴软件有限公司 一种hfs+文件系统数据恢复方法及装置
CN104376091A (zh) * 2014-11-20 2015-02-25 厦门市美亚柏科信息股份有限公司 对SQLite中删除的数据进行恢复的方法及装置
KR101575246B1 (ko) * 2014-12-10 2015-12-21 고려대학교 산학협력단 SQLite 데이터베이스 파일 내 손상된 레코드의 복원 방법
CN109491861A (zh) * 2018-10-19 2019-03-19 厦门市美亚柏科信息股份有限公司 一种溢出页异常的数据库修复方法、装置及存储介质

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5806065A (en) * 1996-05-06 1998-09-08 Microsoft Corporation Data system with distributed tree indexes and method for maintaining the indexes
CN102289526A (zh) * 2011-09-29 2011-12-21 深圳市万兴软件有限公司 一种hfs+文件系统数据恢复方法及装置
CN104376091A (zh) * 2014-11-20 2015-02-25 厦门市美亚柏科信息股份有限公司 对SQLite中删除的数据进行恢复的方法及装置
KR101575246B1 (ko) * 2014-12-10 2015-12-21 고려대학교 산학협력단 SQLite 데이터베이스 파일 내 손상된 레코드의 복원 방법
CN109491861A (zh) * 2018-10-19 2019-03-19 厦门市美亚柏科信息股份有限公司 一种溢出页异常的数据库修复方法、装置及存储介质

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
基于SQLite内容雕刻的恢复技术;马庆杰等;《计算机应用》;20170210(第02期);第94-98页 *

Also Published As

Publication number Publication date
CN112579336A (zh) 2021-03-30

Similar Documents

Publication Publication Date Title
CN107168995B (zh) 一种数据处理方法及服务器
CN111427928A (zh) 一种数据质量检测方法及装置
CN112328499A (zh) 一种测试数据生成方法、装置、设备及介质
CN113642311B (zh) 一种数据对比方法、装置、电子设备及存储介质
CN108920601B (zh) 一种数据匹配方法及装置
CN113010477B (zh) 持久内存文件系统元数据的检索方法和装置、存储结构
CN112579336B (zh) 数据库异常修复方法、装置、计算设备及存储介质
CN114625554A (zh) 故障修复方法、装置、电子设备及存储介质
CN112506897A (zh) 一种分析、定位数据质量问题的方法及系统
CN112966293B (zh) 数据库脏页面检测方法、装置、计算设备及存储介质
CN107315806B (zh) 一种基于文件系统的嵌入式存储方法和装置
CN112487122B (zh) 地址归一化处理方法及装置
CN112579612A (zh) 数据库索引表记录分析方法、装置、计算设备及存储介质
CN114546749A (zh) 一种芯片随机测试用例回归方法、装置、设备及可读介质
CN114579716A (zh) 知识图谱的查询方法及装置
CN115729752A (zh) 一种寄存器检查方法及装置、存储介质
CN113031835A (zh) 一种菜单数据处理方法及装置
CN111736848A (zh) 包冲突定位方法、装置、电子设备及可读存储介质
CN112433943A (zh) 基于抽象语法树的环境变量检测方法、装置、设备及介质
CN112256685A (zh) 基于电子表格的分割去重导入方法及相关产品
CN109446022B (zh) 一种数据库溢出页异常的检测方法、装置及存储介质
CN113806371B (zh) 数据类型确定方法、装置、计算机设备及存储介质
CN109189346B (zh) 一种数据处理方法及装置
CN108279990B (zh) 一种系统检查方法、装置及电子设备
CN117762787A (zh) 基于蜕变测试的etl系统测试方法、装置、设备及介质

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