CN109753382A - 一种数据库删除记录的恢复方法及系统 - Google Patents

一种数据库删除记录的恢复方法及系统 Download PDF

Info

Publication number
CN109753382A
CN109753382A CN201811504797.3A CN201811504797A CN109753382A CN 109753382 A CN109753382 A CN 109753382A CN 201811504797 A CN201811504797 A CN 201811504797A CN 109753382 A CN109753382 A CN 109753382A
Authority
CN
China
Prior art keywords
slot pointer
offset address
record
deletion
slot
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.)
Granted
Application number
CN201811504797.3A
Other languages
English (en)
Other versions
CN109753382B (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 CN201811504797.3A priority Critical patent/CN109753382B/zh
Publication of CN109753382A publication Critical patent/CN109753382A/zh
Priority to EP19797973.5A priority patent/EP3798842A4/en
Priority to PCT/CN2019/099121 priority patent/WO2020119143A1/zh
Application granted granted Critical
Publication of CN109753382B publication Critical patent/CN109753382B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • 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

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)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明提供一种数据库删除记录的恢复的信息处理方法、系统及计算机存储介质,该方法包括:获取槽指针值;根据所述槽指针值和当前偏移地址获取至少一个删除记录;解析所述至少一个删除记录并恢复所述至少一个删除记录。根据本发明的方法、系统及计算机存储介质,根据实际数据在删除记录后的变化情况进行删除数据恢复,恢复速度快速且恢复数据全面。

Description

一种数据库删除记录的恢复方法及系统
技术领域
本申请涉及计算机技术领域,特别涉及信息安全。
背景技术
SQLSERVER是微软公司开发的关系型数据库,由于微软
WINDOWS操作系统的普及且SQLSERVER数据库和WINDOWS操作系统极好的兼容性和稳定性,使得SQLSERVER数据库成为最受欢迎的数据库之一。因此,在信息安全领域对SQLSERVER数据库的删除记录的恢复一直是备受关注的热点。目前市场上仅有少数基于
日志的在线恢复方法或数据库管理员手动恢复方法,在离线恢复方面没有相关技术。
因此,现有技术中存在无法离线恢复删除记录的缺陷。
发明内容
考虑到上述问题而提出了本发明。本发明提供了一种数据库删除记录的恢复方法、系统及计算机存储介质,通过解析数据文件方法恢复,无需运行数据库服务,不依赖日志文件及事务是否开启即能恢复删除记录。
根据本发明一方面,提供了一数据库删除记录的恢复方法,所述方法包括:
获取槽指针值;
根据所述槽指针值和当前偏移地址获取至少一个删除记录;
解析所述至少一个删除记录并恢复所述至少一个删除记录。
可选地,获取数据页槽指针列表;遍历所述槽指针列表中的所有槽指针。
可选地,所述根据所述槽指针值和当前偏移地址获取至少一个删除记录包括:
比较所述槽指针值与当前偏移地址的大小,如果所述当前偏移地址小于所述槽指针值,则确认所述槽指针值之前有删除记录;
将偏移地址设置为所述当前偏移地址,并读取所述偏移地址得到第一删除记录。
可选地,所述根据所述槽指针值和当前偏移地址获取至少一个删除记录还包括:如果解析所述第一删除记录成功,则重复判断所述槽指针之前是否还存在其他删除记录。
可选地,所述判断所述槽指针值之前是否还存在其他删除记录包括:
将偏移地址设置为当前偏移地址加上所述当前记录的长度;
比较所述槽指针值与所述偏移地址的大小,如果所述偏移地址小于当前槽指针值的大小,读取所述偏移地址得到所述指针值之前的其他删除记录。
可选地,所述根据所述槽指针值和当前偏移地址获取至少一个删除记录还包括:当所述槽指针值之前的其他删除记录解析不成功或偏移地址不小于所述槽指针值时,停止所述重复判断所述槽指针之前是否还存在其他删除记录。
可选地,所述根据所述槽指针值和当前偏移地址获取至少一个删除记录还包括:如果所述第一删除记录或所述槽指针值之前的其他删除记录解析不成功或偏移地址不小于所述槽指针值,则判断所述槽指针值是否被清零;
如果所述槽指针值为0,则将偏移地址设置为所述槽指针值;
如果所述槽指针值不为0,则判断所述槽指针是否为第一个槽指针;如果所述槽指针为第一个槽指针,则将偏移地址设置为所述偏移地址初始值,如果所述槽指针不为第一个槽指针,则将偏移地址设置为所述槽指针的前一个槽指针的偏移地址加上所述前一个槽指针的记录长度;
读取所述偏移地址得到第二删除记录。
可选地,所述根据所述槽指针值和当前偏移地址获取至少一个删除记录还包括:
判断所述槽指针是否为最后一个槽指针,如果所述槽指针不为最后一个槽指针,则获取下一个槽指针并根据所述下一个槽指针值和当前偏移地址获取至少一个删除记录。
可选地,所述根据所述槽指针值和当前偏移地址获取至少一个删除记录还包括:
如果所述槽指针为最后一个槽指针,则将偏移地址设置为当前偏移地址加上当前记录的长度;
判断所述偏移地址是否大于或等于页面大小,如果所述偏移地址大于或等于页面大小则结束,如果所述偏移地址小于页面大小则读取所述偏移地址得到第三删除记录。
可选地,所述根据所述槽指针值和当前偏移地址获取至少一个删除记录还包括:
如果解析所述第三删除记录不成功则结束;如果解析所述第三删除记录成功,则重复判断所述槽指针之后是否存在其他删除记录。
可选地,所述判断所述槽指针之后是否存在其他删除记录包括:
将偏移地址设置为当前偏移地址加上当前记录的长度;
判断所述偏移地址是否大于或等于页面大小,如果所述偏移地址大于或等于页面大小则结束,如果所述偏移地址小于页面大小则读取所述偏移地址得到所述槽指针之后的其他删除记录。
可选地,所述根据所述槽指针值和当前偏移地址获取至少一个删除记录还包括:当所述槽指针值之后的其他删除记录解析不成功或偏移地址大于或等于页面大小时,停止所述重复判断所述槽指针之后是否还存在其他删除记录。
根据本发明另一方面,提供了一种数据库删除记录的恢复系统,包括存储器、处理器及存储在所述存储器上且在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求上述方法的步骤。
根据本发明另一方面,提供了一种计算机存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被计算机执行时实现上述方法的步骤。
根据本发明实施例的数据库删除记录的恢复方法、系统和计算机存储介质,通过解析数据文件方法恢复,无需运行数据库服务,不依赖日志文件及事务是否开启即能恢复删除记录。
附图说明
通过结合附图对本发明实施例进行更详细的描述,本发明的上述以及其它目的、特征和优势将变得更加明显。附图用来提供对本发明实施例的进一步理解,并且构成说明书的一部分,与本发明实施例一起用于解释本发明,并不构成对本发明的限制。在附图中,相同的参考标号通常代表相同部件或步骤。
图1是根据本发明实施例的数据文件结构的示意图;
图2是根据本发明实施例的数据页结构的示意图;
图3是根据本发明实施例的数据记录结构的示意图;
图4是根据本发明实施例的一种数据库删除记录的恢复方法的示意性流程图;
图5是根据本发明实施例的一种数据库删除记录的恢复方法示例的示意性流程图;
图6-图13是根据本发明实施例的一种数据库删除记录的恢复方法的示例的示意图。
具体实施方式
为了使得本发明的目的、技术方案和优点更为明显,下面将参照附图详细描述根据本发明的示例实施例。显然,所描述的实施例仅仅是本发明的一部分实施例,而不是本发明的全部实施例,应理解,本发明不受这里描述的示例实施例的限制。基于本发明中描述的本发明实施例,本领域技术人员在没有付出创造性劳动的情况下所得到的所有其它实施例都应落入本发明的保护范围之内。
SQLSERVER是微软公司开发的关系型数据库,SQLSERVER字段类型可按固定长度和可变长度进行划分,固定长度字段类型主要类型有TinyInt,SmallInt,Int,BigInt,Float,Real,DateTime,Date,Time,Money,SamllMoney,Char,nChar,Binary等,可变字段类型主要有VarChar,nVarChar,VarBinary,Text,nText,Image等。字段包含字段名,字段类型,字段长度等;表结构由表名,主键,索引及若干字段等组成。
SQLSERVER数据文件通常以mdf或ndf为后缀命名,文件内部以页(Page)为基本单位组成,且页在数据文件内按页号(Page No)从小到大排列,如图1所示,图1示出了本发明实施例的数据文件结构的示意图。
而数据页是组成数据文件的基本单位,页的大小PageSize通常为8192字节,一个数据文件通常包含多种类型的页,如文件头页,启动页,数据页,索引页等。其中数据页即用于存储记录的页。
数据页由三个部分组成:96字节页头(PageHeader),记录(Record)列表,指向记录位置的槽(slot),其中页头部中记录了Solt个数;如图2所示,图2示出了本发明实施例的数据页结构的示意图。
其中,如图3所示,图3示出了本发明实施例的数据记录结构的示意图。SQLSERVER记录结构包括:
状态位A:占一个字节,包含该记录的记录类型,是否有NULL位图,是否包含可变长列信息。
状态位B:占一个字节。
定长数据长度:占两个字节。
定长数据内容:定长列数据长度(FixDataLen)为各定长字段长度之和。
总列数(ColCount):占两个字节。
NULL位图:长度为((ColCount+7)/8)。
变长列数(VarColCount):占两个字节。
变长列偏移矩阵:长度为(VarColCount*2)。
变长列数据内容:变长列数据长度(VarDataLen)为变长列偏移矩阵的结束位置减变长列偏移矩阵的起始位置。
设bNullBit表示是否有NULL位图,当有NULL位图时bNullBit=1,没有NULL位图时bNullBit=0。设bVarCol表示是否有变长列,当有变长列时,bVarCol=1,没有变长列时bVarCol。则记录长度(RecordLength)计算公式:
RecordLength=FixDataLen+VarDataLen+(VarColCount*2)+bNullBit*((ColCount+7)/8)+6+bVarCol*2。
SQLSERVER记录主要类型包括:主记录(Primary Record),包括数据记录;索引记录(Index Record),包括索引数据记录的记录;行迁移记录(Forwoared Record),包括由更新内容导致字段数据在该记录之外的记录;幽灵记录(Gohst Record),包括标记为删除实际还未删除的记录。
SQLSERVER为了加快记录删除和记录删除后的回滚操作,引入了记录的逻辑删除,即记录先被标记为删除,再执行物理删除,这些被标记为删除的记录即幽灵记录;执行记录物理删除实际只把记录槽清零,实际数据并没有删除;页末尾执行物理删除后再进行写入数据操作,实际数据并未被覆盖,但是槽指针会被覆盖。
基于上述原理,本发明实施例提供了一种数据库删除记录的恢复方法,通过解析数据文件方法恢复,无需运行数据库服务,不依赖日志文件及事务是否开启即能恢复删除记录。
首先,参考图4来描述用于本发明实施例的一种数据库删除记录的恢复方法的示意流程图,包括:
首先,在步骤S410,获取槽指针值;
在步骤S420,根据所述槽指针值和当前偏移地址获取至少一个删除记录;
最后,在步骤S430,解析所述至少一个删除记录并恢复所述至少一个删除记录。
可选地,获取数据页槽指针列表;遍历所述槽指针列表中的所有槽指针。遍历所有槽指针可以保证获取删除记录的全面性,防止遗漏删除数据的恢复。
根据不同的记录类型可以通过不同的方式获取删除记录,对于幽灵记录,其仅仅是标记为删除但是还没有删除,可以直接通过槽指针获取删除记录位置并解析该记录;对于槽指针被清零情况,其只是把记录槽清零,实际数据并没有删除,可以通过前一个记录位置加上前一条记录长度获取到该槽对应删除记录的位置,读取并解析该记录;对于槽指针被覆盖情况,实际数据并未被覆盖,但是槽指针被覆盖,可以分析当前记录的位置和记录长度,若当前记录位置加当前记录长度小于下一条记录位置则判断当前记录后有删除记录,定位删除记录位置并读取解析。
可选地,所述根据所述槽指针值和当前偏移地址获取至少一个删除记录包括:
比较所述槽指针值与当前偏移地址的大小,如果所述当前偏移地址小于所述槽指针值,则确认所述槽指针值之前有删除记录;
将偏移地址设置为所述当前偏移地址,并读取所述偏移地址得到第一删除记录。
其中,没有删除记录的原始数据中,所述槽指针值与偏移地址相同,如果某个槽指针的值之前存在删除记录,则偏移地址变小,也就是说,当偏移地址小于所述槽指针值时,说明再该某个槽指针之前存在删除记录。读取到该某个槽指针之前的第一个删除记录之后进一步重复判断该某个槽指针之前是否还存在其他的删除记录,直至判断出来所有的该某个槽指针之前存在的其他删除记录或删除记录解析不成功。
而删除记录解析成功包括:记录结构中的总列数需和表结构字段数一致、记录结构中可变长字段数和表结构中可变长字段数一致、记录结构中定长数据长度和表结构各定长字段长度之和一致中的至少一个。
可选地,所述根据所述槽指针值和当前偏移地址获取至少一个删除记录还包括:如果解析所述第一删除记录成功,则重复判断所述槽指针之前是否还存在其他删除记录。
可选地,所述判断所述槽指针值之前是否还存在其他删除记录包括:
将偏移地址设置为当前偏移地址加上所述当前记录的长度;
比较所述槽指针值与所述偏移地址的大小,如果所述偏移地址小于当前槽指针值的大小,读取所述偏移地址得到所述指针值之前的其他删除记录。
可选地,所述根据所述槽指针值和当前偏移地址获取至少一个删除记录还包括:当所述槽指针值之前的其他删除记录解析不成功或偏移地址不小于所述槽指针值时,停止所述重复判断所述槽指针之前是否还存在其他删除记录。
如果所述槽指针值被清零但实际数据并没有删除,当读取到槽指针为0,则通过前一个记录位置加上前一条记录长度获取到该槽对应删除记录的位置,读取并解析该记录;也可以进一步判断槽针指是不是第一个槽指针,如果不是第一个槽指针,则判断所述则通过前一个记录位置加上前一条记录长度获取到该槽对应删除记录的位置,读取并解析该记录;如果时第一个槽指针且第一个槽指针被清零则,所述删除记录的位置为96字节页头(PageHeader)之后开始,所以偏移地址初始值可以为96。
可选地,所述根据所述槽指针值和当前偏移地址获取至少一个删除记录还包括:如果所述第一删除记录或所述槽指针值之前的其他删除记录解析不成功或偏移地址不小于所述槽指针值,则判断所述槽指针值是否被清零;
如果所述槽指针值为0,则将偏移地址设置为所述槽指针值;
如果所述槽指针值不为0,则判断所述槽指针是否为第一个槽指针;如果所述槽指针为第一个槽指针,则将偏移地址设置为所述偏移地址初始值,如果所述槽指针不为第一个槽指针,则将偏移地址设置为所述槽指针的前一个槽指针的偏移地址加上所述前一个槽指针的记录长度;
读取所述偏移地址得到第二删除记录。
可选地,所述偏移地址初始值为96。进一步地,如果第一个槽指针若大于96,则说明在第一槽指针位置之前有删除的记录。
可选地,所述根据所述槽指针值和当前偏移地址获取至少一个删除记录还包括:
判断所述槽指针是否为最后一个槽指针,如果所述槽指针不为最后一个槽指针,则获取下一个槽指针并根据所述下一个槽指针值和当前偏移地址获取至少一个删除记录。
由于页末尾执行物理删除后再进行写入数据操作,实际数据并未被覆盖,但是槽指针会被覆盖,所以当确认所述槽指针为最后一个槽指针时,分析当前记录的位置和记录长度,若当前记录位置加当前记录长度小于下一条记录位置则判断当前记录后有删除记录,定位删除记录位置并读取解析。
可选地,所述根据所述槽指针值和当前偏移地址获取至少一个删除记录还包括:
如果所述槽指针为最后一个槽指针,则将偏移地址设置为当前偏移地址加上当前记录的长度;
判断所述偏移地址是否大于或等于页面大小,如果所述偏移地址大于或等于页面大小则结束,如果所述偏移地址小于页面大小则读取所述偏移地址得到第三删除记录。
可选地,所述根据所述槽指针值和当前偏移地址获取至少一个删除记录还包括:
如果解析所述第三删除记录不成功则结束;如果解析所述第三删除记录成功,则重复判断所述槽指针之后是否存在其他删除记录。
可选地,所述判断所述槽指针之后是否存在其他删除记录包括:
将偏移地址设置为当前偏移地址加上当前记录的长度;
判断所述偏移地址是否大于或等于页面大小,如果所述偏移地址大于或等于页面大小则结束,如果所述偏移地址小于页面大小则读取所述偏移地址得到所述槽指针之后的其他删除记录。
可选地,所述根据所述槽指针值和当前偏移地址获取至少一个删除记录还包括:当所述槽指针值之后的其他删除记录解析不成功或偏移地址大于或等于页面大小时,停止所述重复判断所述槽指针之后是否还存在其他删除记录。
参见图5对本发明实施例的数据库删除记录的恢复方法进行进一步说明,图5示出了本发明实施例的一种数据库删除记录的恢复方法示例的示意性流程图。
步骤S51,读取数据页,并分析数据页头部信息;并设置偏移地址Offset=96;
步骤S52,读取当前数据页的槽指针列表,其中设槽指针总数为N,第一个槽指针开始遍历,而当前为第i个槽指针;
步骤S53,读取第i个槽指针即当前槽指针值Slot;
步骤S54,判断所述当前槽指针值Slot是否大于偏移地址Offset,如果所述当前槽指针值Slot大于Offset,则说明第i个槽指针之前存在删除记录,执行步骤S55;如果所述当前槽指针值Slot不大于Offset,执行步骤S56;
步骤S55,读取所述偏移地址offset得到所述删除记录的位置,并解析所述删除记录:
如果解析成功则设置偏移地址Offset=Offset+Length,Length为当前记录长度,以判断当前第i个槽指针之前是否还存在其他删除记录,重复执行步骤S54;如果解析不成功,则执行步骤S56;
步骤S56,判断所述当前槽指针值Slot即第i个槽指针是否被清零,具体包括:判断Slot是否为0,如果Slot为0,则执行步骤S57;如果Slot不为0,则设置Offset=Slot并执行步骤S58;
步骤S57,判断所述第i个槽指针是否为第一个槽,具体包括:判断i是否为1,若i为1则设置偏移地址Offset=96,若i不为1则设置偏移地址Offset=Offset+Length,其中,Length为当前记录的长度,执行步骤S58;
步骤S58,读取并解析当前记录,并获取当前记录长度Length;
步骤S59,判断所述第i个槽指针是否是最后一个槽,具体包括:i是否大于或等于N;如果所述第i个槽指针是最后一个槽,则执行S510,如果所述第i个槽指针不是最后一个槽,则i=i+1并重复步骤53;
步骤S510,设置Offset=Offset+Length,判断Offset是否大于等于页大小PageSize,如果Offset大于等于页大小PageSize则结束,否则执行步骤S511;
步骤S511,读取Offset位置并解析记录并获取当前记录长度Length;如果解析成功则重复步骤S510,如果解析失败则结束。
在一个实施例中,参见图6-图13,图6-图13示出了根据本发明实施例的数据库删除记录的恢复方法的示例的示意图,以具体示例对本发明实施例的数据库删除记录的恢复方法进一步说明。具体如下:
首先,创建测试数据库test.mdf;
其次,在test.mdf数据库中创建一张测试表student。表student包含三个字段:第一个字段名ID,字段类型为Int,第二个字段Name,字段类型为VarChar,第三个字段名Age,字段类型为SamllInt,如图6所示;
再次,往表student中插入若干条记录,如图7所示:删除第2和3条记录。删除后表数据如图8所示;根据本发明实施例的数据库删除记录的恢复方法进行恢复,恢复结果如图9所示;
然后,删除表student所有记录,删除后表数据如图10所示;根据本发明实施例的数据库删除记录的恢复方法进行恢复,恢复结果如图11所示;
接着,再往表中插入2条数据,插入数据后如图12所示:根据本发明实施例的数据库删除记录的恢复方法进行恢复,恢复结果如图13所示。
由此可知,根据本发明实施例的数据删除记录的恢复方法,通过解析数据文件方法恢复,无需运行数据库服务,不依赖日志文件及事务是否开启即能恢复删除记录。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
根据本发明的另一方面,提供一种数据库删除记录的恢复系统,包括存储装置、以及处理器;
所述存储装置存储用于实现根据本发明实施例的数据库删除记录的恢复方法中的相应步骤的程序代码;
所述处理器用于运行所述存储装置中存储的程序代码,以执行以上根据本发明实施例的数据库删除记录的恢复方法的相应步骤。
在一个实施例中,在所述程序代码被所述处理器运行时执行以上根据本发明实施例的前述数据库删除记录的恢复方法的相应步骤。
此外,根据本发明实施例,还提供了一种存储介质,在所述存储介质上存储了程序指令,在所述程序指令被计算机或处理器运行时用于执行本发明实施例的数据库删除记录的恢复方法的相应步骤,并且用于实现根据本发明实施例的数据库删除记录的恢复系统。所述计算机可读存储介质可以是一个或多个计算机可读存储介质的任意组合,例如一个计算机可读存储介质包含用于随机地生成动作指令序列的计算机可读的程序代码,另一个计算机可读存储介质包含用于进行数据库删除记录的恢复的计算机可读的程序代码。
在一个实施例中,所述计算机程序指令在被计算机运行时可以实现根据本发明实施例的前述数据库删除记录的恢复方法。
综上所述,根据本发明实施例的一种基于数据库删除记录的恢复方法、系统及计算机存储介质,通过解析数据文件方法恢复,无需运行数据库服务,不依赖日志文件及事务是否开启即能恢复删除记录。
尽管这里已经参考附图描述了示例实施例,应理解上述示例实施例仅仅是示例性的,并且不意图将本发明的范围限制于此。本领域普通技术人员可以在其中进行各种改变和修改,而不偏离本发明的范围和精神。所有这些改变和修改意在被包括在所附权利要求所要求的本发明的范围之内。
以上所述,仅为本发明的具体实施方式或对具体实施方式的说明,本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。本发明的保护范围应以权利要求的保护范围为准。

Claims (14)

1.一种数据库删除记录的恢复方法,其特征在于,所述方法包括:
获取槽指针值;
根据所述槽指针值和当前偏移地址获取至少一个删除记录;
解析所述至少一个删除记录并恢复所述至少一个删除记录。
2.如权利要求1所述的方法,其特征在于,所述方法还包括:
获取数据页槽指针列表;遍历所述槽指针列表中的所有槽指针。
3.如权利要求1所述的方法,其特征在于,所述根据所述槽指针值和当前偏移地址获取至少一个删除记录包括:
比较所述槽指针值与当前偏移地址的大小,如果所述当前偏移地址小于所述槽指针值,则确认所述槽指针值之前有删除记录;
将偏移地址设置为所述当前偏移地址,并读取所述偏移地址得到第一删除记录。
4.如权利要求3所述的方法,其特征在于,所述根据所述槽指针值和当前偏移地址获取至少一个删除记录还包括:如果解析所述第一删除记录成功,则重复判断所述槽指针之前是否还存在其他删除记录。
5.如权利要求4所述的方法,其特征在于,所述判断所述槽指针值之前是否还存在其他删除记录包括:
将偏移地址设置为当前偏移地址加上所述当前记录的长度;
比较所述槽指针值与所述偏移地址的大小,如果所述偏移地址小于当前槽指针值的大小,读取所述偏移地址得到所述指针值之前的其他删除记录。
6.如权利要求5所述的方法,其特征在于,所述根据所述槽指针值和当前偏移地址获取至少一个删除记录还包括:当所述槽指针值之前的其他删除记录解析不成功或偏移地址不小于所述槽指针值时,停止所述重复判断所述槽指针之前是否还存在其他删除记录。
7.如权利要求6所述的方法,其特征在于,所述根据所述槽指针值和当前偏移地址获取至少一个删除记录还包括:如果所述第一删除记录或所述槽指针值之前的其他删除记录解析不成功或偏移地址不小于所述槽指针值,则判断所述槽指针值是否被清零;
如果所述槽指针值为0,则将偏移地址设置为所述槽指针值;
如果所述槽指针值不为0,则判断所述槽指针是否为第一个槽指针;如果所述槽指针为第一个槽指针,则将偏移地址设置为所述偏移地址初始值,如果所述槽指针不为第一个槽指针,则将偏移地址设置为所述槽指针的前一个槽指针的偏移地址加上所述前一个槽指针的记录长度;
读取所述偏移地址得到第二删除记录。
8.如权利要求7所述的方法,其特征在于,所述根据所述槽指针值和当前偏移地址获取至少一个删除记录还包括:
判断所述槽指针是否为最后一个槽指针,如果所述槽指针不为最后一个槽指针,则获取下一个槽指针并根据所述下一个槽指针值和当前偏移地址获取至少一个删除记录。
9.如权利要求8所述的方法,其特征在于,所述根据所述槽指针值和当前偏移地址获取至少一个删除记录还包括:
如果所述槽指针为最后一个槽指针,则将偏移地址设置为当前偏移地址加上当前记录的长度;
判断所述偏移地址是否大于或等于页面大小,如果所述偏移地址大于或等于页面大小则结束,如果所述偏移地址小于页面大小则读取所述偏移地址得到第三删除记录。
10.如权利要求9所述的方法,其特征在于,所述根据所述槽指针值和当前偏移地址获取至少一个删除记录还包括:
如果解析所述第三删除记录不成功则结束;如果解析所述第三删除记录成功,则重复判断所述槽指针之后是否存在其他删除记录。
11.如权利要求10所述的方法,其特征在于,所述判断所述槽指针之后是否存在其他删除记录包括:
将偏移地址设置为当前偏移地址加上当前记录的长度;
判断所述偏移地址是否大于或等于页面大小,如果所述偏移地址大于或等于页面大小则结束,如果所述偏移地址小于页面大小则读取所述偏移地址得到所述槽指针之后的其他删除记录。
12.如权利要求11所述的方法,其特征在于,所述根据所述槽指针值和当前偏移地址获取至少一个删除记录还包括:当所述槽指针值之后的其他删除记录解析不成功或偏移地址大于或等于页面大小时,停止所述重复判断所述槽指针之后是否还存在其他删除记录。
13.一种数据库删除记录的恢复系统,包括存储器、处理器及存储在所述存储器上且在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至12中任一项所述方法的步骤。
14.一种计算机存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被计算机执行时实现权利要求1至12中任一项所述方法的步骤。
CN201811504797.3A 2018-12-10 2018-12-10 一种数据库删除记录的恢复方法及系统 Active CN109753382B (zh)

Priority Applications (3)

Application Number Priority Date Filing Date Title
CN201811504797.3A CN109753382B (zh) 2018-12-10 2018-12-10 一种数据库删除记录的恢复方法及系统
EP19797973.5A EP3798842A4 (en) 2018-12-10 2019-08-02 METHOD AND SYSTEM FOR RECOVERING DELETED DATABASE RECORDS
PCT/CN2019/099121 WO2020119143A1 (zh) 2018-12-10 2019-08-02 一种数据库删除记录的恢复方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201811504797.3A CN109753382B (zh) 2018-12-10 2018-12-10 一种数据库删除记录的恢复方法及系统

Publications (2)

Publication Number Publication Date
CN109753382A true CN109753382A (zh) 2019-05-14
CN109753382B CN109753382B (zh) 2022-01-07

Family

ID=66403676

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201811504797.3A Active CN109753382B (zh) 2018-12-10 2018-12-10 一种数据库删除记录的恢复方法及系统

Country Status (3)

Country Link
EP (1) EP3798842A4 (zh)
CN (1) CN109753382B (zh)
WO (1) WO2020119143A1 (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111104259A (zh) * 2019-12-23 2020-05-05 厦门市美亚柏科信息股份有限公司 一种数据库恢复方法、装置及存储介质
WO2020119143A1 (zh) * 2018-12-10 2020-06-18 厦门市美亚柏科信息股份有限公司 一种数据库删除记录的恢复方法及系统
CN112650725A (zh) * 2020-12-30 2021-04-13 四川效率源信息安全技术股份有限公司 一种恢复dm8数据库日志文件的方法
CN114398341A (zh) * 2021-12-31 2022-04-26 厦门市美亚柏科信息股份有限公司 一种Sybase ASE数据库删除数据恢复方法和装置

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112307303A (zh) * 2020-10-29 2021-02-02 扆亮海 基于云计算的网络页面高效精准去重系统
CN112433878A (zh) * 2020-12-18 2021-03-02 深圳昂楷科技有限公司 一种恢复损坏的关系型数据库中数据的方法和装置

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1556483A (zh) * 2003-12-31 2004-12-22 ����ͨѶ�ɷ����޹�˾ 一种在数据库里快速定位数据页中记录的方法
CN101315628A (zh) * 2007-06-01 2008-12-03 华为技术有限公司 内存数据库系统及实现内存数据库的方法和装置
US20140330829A1 (en) * 2011-04-27 2014-11-06 Verisign, Inc. Systems and methods for a cache-sensitive index using partial keys
CN106970859A (zh) * 2017-03-31 2017-07-21 青岛海信移动通信技术股份有限公司 离线邮件的备份与恢复的方法和装置
CN108009049A (zh) * 2017-11-28 2018-05-08 厦门市美亚柏科信息股份有限公司 Myisam存储引擎删除记录离线恢复方法、存储介质
CN108062358A (zh) * 2017-11-28 2018-05-22 厦门市美亚柏科信息股份有限公司 innodb引擎删除记录的离线恢复方法、存储介质

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5682513A (en) * 1995-03-31 1997-10-28 International Business Machines Corporation Cache queue entry linking for DASD record updates
CN101504660A (zh) * 2009-03-06 2009-08-12 清华大学 一种纯扩展标记语言数据库的查询管理方法及其系统
WO2015163696A1 (ko) * 2014-04-23 2015-10-29 고려대학교 산학협력단 마이크로소프트 sql 서버 데이터베이스에서 데이터를 복원하는 방법 및 장치
CN104199888B (zh) * 2014-08-25 2017-08-01 厦门市美亚柏科信息股份有限公司 弹性文件系统的数据恢复方法和装置
CN109753382B (zh) * 2018-12-10 2022-01-07 厦门市美亚柏科信息股份有限公司 一种数据库删除记录的恢复方法及系统

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1556483A (zh) * 2003-12-31 2004-12-22 ����ͨѶ�ɷ����޹�˾ 一种在数据库里快速定位数据页中记录的方法
CN101315628A (zh) * 2007-06-01 2008-12-03 华为技术有限公司 内存数据库系统及实现内存数据库的方法和装置
US20140330829A1 (en) * 2011-04-27 2014-11-06 Verisign, Inc. Systems and methods for a cache-sensitive index using partial keys
CN106970859A (zh) * 2017-03-31 2017-07-21 青岛海信移动通信技术股份有限公司 离线邮件的备份与恢复的方法和装置
CN108009049A (zh) * 2017-11-28 2018-05-08 厦门市美亚柏科信息股份有限公司 Myisam存储引擎删除记录离线恢复方法、存储介质
CN108062358A (zh) * 2017-11-28 2018-05-22 厦门市美亚柏科信息股份有限公司 innodb引擎删除记录的离线恢复方法、存储介质

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
李爱武: "《SQL Server 2008数据库技术内幕》", 31 August 2012, 中国铁道出版社 *

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2020119143A1 (zh) * 2018-12-10 2020-06-18 厦门市美亚柏科信息股份有限公司 一种数据库删除记录的恢复方法及系统
CN111104259A (zh) * 2019-12-23 2020-05-05 厦门市美亚柏科信息股份有限公司 一种数据库恢复方法、装置及存储介质
CN111104259B (zh) * 2019-12-23 2022-08-12 厦门市美亚柏科信息股份有限公司 一种数据库恢复方法、装置及存储介质
CN112650725A (zh) * 2020-12-30 2021-04-13 四川效率源信息安全技术股份有限公司 一种恢复dm8数据库日志文件的方法
CN114398341A (zh) * 2021-12-31 2022-04-26 厦门市美亚柏科信息股份有限公司 一种Sybase ASE数据库删除数据恢复方法和装置

Also Published As

Publication number Publication date
WO2020119143A1 (zh) 2020-06-18
EP3798842A4 (en) 2022-04-13
CN109753382B (zh) 2022-01-07
EP3798842A1 (en) 2021-03-31

Similar Documents

Publication Publication Date Title
CN109753382A (zh) 一种数据库删除记录的恢复方法及系统
CN1707481B (zh) 用于数据模型中实体的自动维护与修复的系统和方法
McCullough et al. Lessons from the JMCB Archive
CN111680634B (zh) 公文文件处理方法、装置、计算机设备及存储介质
EP0351387A2 (en) Minimizing locking and reading in a segmented storage space
CN108062358A (zh) innodb引擎删除记录的离线恢复方法、存储介质
CN108009049B (zh) Myisam存储引擎删除记录离线恢复方法、存储介质
US7483911B2 (en) Sending log records directly from log buffer
US8065557B2 (en) Apparatus for managing data backup
CN108388569A (zh) 一种快速的键值数据库的系统及建立方法
CN106445815A (zh) 一种自动化测试方法及装置
DE112013001108B4 (de) Ein verfahren, eine vorrichtung, ein controller, ein computerprogramm und ein computerprogrammprodukt zum schreiben von neuen daten einer ersten blockgrösse in eine zweite blockgrösse, wobei ein write-write-modus verwendet wird
CN106897174B (zh) 一种针对mysql数据库的碎片恢复方法
CN109992476B (zh) 一种日志的分析方法、服务器及存储介质
CN108984337A (zh) 一种数据同步异常的修复方法、修复装置、介质和计算设备
CN102073554B (zh) 一种文件异常关闭的恢复方法和装置
US10311033B2 (en) Alleviation of index hot spots in data sharing environment with remote update and provisional keys
US7801866B1 (en) Systems and methods for reading only durably committed data in a system that otherwise permits lazy commit of transactions
CN103729269A (zh) 一种基于云架构的网络考试数据双缓存方法
CN104978241B (zh) 一种cow类型文件系统的数据恢复方法及装置
US20130024765A1 (en) Processing rich text data for storing as legacy data records in a data storage system
CN112395401A (zh) 自适应负样本对采样方法、装置、电子设备及存储介质
JPS5949062A (ja) 情報記憶方式
Cho et al. Finding forensic information on creating a folder in $ logfile of ntfs
WO2010038481A1 (ja) 文章抽出プログラムを記録したコンピュータ読み取り可能な記録媒体、文章抽出方法、文章抽出装置

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