嵌入式设备的数据库恢复方法、电子设备及介质技术

技术编号:28207649 阅读:25 留言:0更新日期:2021-04-24 14:38
本发明专利技术涉及一种嵌入式设备的数据库恢复方法、电子设备及介质,嵌入式设备的数据库恢复方法通过将读取的Nand Flash存储器上的二进制的数据文件保存在Windows目录下,且在读取该数据文件占用磁盘容量的容量值后,创建该数据文件的Windows内存映射,通过载入恢复工具里配置的Nand Flash存储器型号及一系列处理过程,得到写入处理后的最终db文件大小值与SQLite数据库文件的文件大小值,而后在上述两个文件大小值相等时,反馈成功完成SQLite数据恢复操作的提示信息,否则,反馈无法完成SQLite数据恢复操作的提示信息,从而实现对YAFFS2文件系统SQLite数据库文件的恢复。YAFFS2文件系统SQLite数据库文件的恢复。YAFFS2文件系统SQLite数据库文件的恢复。

【技术实现步骤摘要】
嵌入式设备的数据库恢复方法、电子设备及介质


[0001]本专利技术涉及数据恢复处理领域,尤其涉及一种嵌入式设备的数据库恢复方法、电子设备及介质。

技术介绍

[0002]在当前的嵌入式设备领域中,很多嵌入式设备会采用YAFFS2文件系统存储和管理文件,SQLite数据库因其具备完善的数据库功能和良好的程序接口而被广泛使用到YAFFS2文件系统针对数据的存储和管理中。
[0003]但是,一旦嵌入式设备出现故障时,原来存储在YAFFS2文件系统中的SQLite数据库文件就会出现损坏的情况,这给正常的管理文件带来了很大的困难,影响到嵌入式设备故障的排查和修复。
[0004]因此,如何实现对YAFFS2文件系统SQLite数据库文件的恢复,成为需要解决的一个技术问题。

技术实现思路

[0005]本专利技术所要解决的第一个技术问题是针对上述现有技术提供一种嵌入式设备的数据库恢复方法。
[0006]本专利技术所要解决的第二个技术问题是针对上述现有技术提供一种实现所述嵌入式设备的数据库恢复方法的电子设备。
[0007]本专利技术所要解决的第三个技术问题是针对上述现有技术提供一种可读存储介质。
[0008]本专利技术解决第一个技术问题所采用的技术方案为:嵌入式设备的数据库恢复方法,其特征在于,包括如下步骤1~15:
[0009]步骤1,从Nand Flash存储器上读取二进制的数据文件,并将读取的该数据文件保存在Windows目录下;
[0010]步骤2,读取所述数据文件占用磁盘容量的容量值;
[0011]步骤3,创建所述数据文件的Windows内存映射;
[0012]步骤4,载入恢复工具里配置的Nand Flash存储器型号,获取该Nand Flash存储器的块大小、页大小以及OOB区的信息,并读取SQLite数据库的文件页大小以及页数量分别在当前SQLite数据库版本的文件头偏移;其中,OOB区的信息包括写入序号、记录对象ID、记录的chunkID以及chunk的有效字节数;
[0013]步骤5,根据读取的所述数据文件的容量值以及获取的Nand Flash存储器的块大小值,计算出该数据文件包含的块数量,并计算出该数据文件包含的页数量;其中,该数据文件包含的页数量为该数据文件所包含各块中的页数量与该数据文件包含的块数量之间的乘积值,各块中的页数量为Nand Flash存储器的块大小值与页大小值之间的比值;
[0014]步骤6,对所得所述数据文件内的所有页面做遍历查找:
[0015]当遍历查找到包含"SQLite format 3"字节数组且位于页面的0字节开始位置处
的页面时,转入步骤7;否则,表明遍历的当前数据文件内未包含需要的SQLite数据库文件,则反馈无法恢复SQLite数据或该SQLite数据不存的提示信息;
[0016]步骤7,记录查找到的该页面的Nand Flash物理页面号,读取该Nand Flash物理页面号所对应Nand Flash存储器的OOB区的信息,并由记录的Nand Flash物理页面号和OOB区的信息形成查找表;
[0017]步骤8,将形成的所述查找表按照写入序号排序,找到具有最大写入序号的页面,将该具有最大写入序号的页面作为目标页面,获取位于所述查找表内且与SQLite数据库的文件头页面相对应的信息;
[0018]步骤9,读取SQLite数据库的文件头页面,获取SQLite数据库文件的页大小值和页数量值,得到SQLite数据库文件的文件大小值;其中,SQLite数据库文件的文件大小值为SQLite数据库文件的页大小值和页数量值之间的乘积;
[0019]步骤10,在恢复工具配置文件预设的指定Windows目录下生成空白的db文件;
[0020]步骤11,建立针对所述空白的db文件的内存映射;
[0021]步骤12,根据SQLite数据库文件的文件头页面在所述查找表中的chunk有效字节数,将Nand Flash物理页面数据从Nand Flash存储器的数据文件中读取出来,并将读取出来的Nand Flash物理页面数据写入到所述db文件内第0字节开始的位置;
[0022]步骤13,再次对整个Nand Flash存储器的数据文件上的所有Nand Flash物理页面的OOB区做遍历查找,查找出与SQLite数据库文件头具有相同对象ID的页面,且在每次查找到该对象ID的页面时,对查找的chunkID数值加1;将查找到的页面按照步骤7的方式记录为一张查找表且按照步骤8的方式找到对应的Nand Flash物理页面数据;
[0023]步骤14,按照步骤13所得查找表中的chunk有效字节数,将读取到的Nand Flash物理页面数据从Nand Flash存储器的数据文件中读取出来,且将读取出来的Nand Flash物理页面数据按照上一次写入偏移写入到所述指定Windows目录下的db文件中,直至无法查找到下一个chunkID对应的Nand Flash物理页为止;
[0024]步骤15,根据写入处理后的最终db文件大小值与步骤9所得SQLite数据库文件的文件大小值做出判断处理:
[0025]当两者相等时,反馈成功完成SQLite数据恢复操作的提示信息;否则,反馈无法完成SQLite数据恢复操作的提示信息。
[0026]改进地,在所述嵌入式设备的数据库恢复方法中,在步骤8中,当所述查找表内的多个页面具有相同的最大写入序号时,将具有最大的Nand Flash物理页面号的页面作为目标页面。
[0027]再改进,在所述嵌入式设备的数据库恢复方法中,在步骤12中,所述Nand Flash物理页面数据从Nand Flash数据文件中按chunk有效字节数和物理页面号读取出来。
[0028]进一步地,在所述嵌入式设备的数据库恢复方法中,所述恢复工具为Windows系统下的恢复工具。
[0029]更进一步地,在所述嵌入式设备的数据库恢复方法中,所述SQLite数据库为SQLite3数据库。
[0030]具体地,在所述嵌入式设备的数据库恢复方法中,所述嵌入式设备为电力集中器。
[0031]优选地,在所述嵌入式设备的数据库恢复方法中,所述步骤4中OOB区的信息为
YAFFS2文件系统的inband

tags为0形式的OOB区信息分布格式。
[0032]再进一步地,在所述嵌入式设备的数据库恢复方法中,所述步骤11的内存映射为文件在Windows内存中的映射。
[0033]本专利技术解决第二个技术问题所采用的技术方案为:电子设备,其特征在于,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时,实现任一项所述的嵌入式设备的数据库恢复方法。
[0034]本专利技术解决第三个技术问题所采用的技术方案为:可读存储介质,其上存储有计算机程序,其特征在于,所述计算本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.嵌入式设备的数据库恢复方法,其特征在于,包括如下步骤1~15:步骤1,从Nand Flash存储器上读取二进制的数据文件,并将读取的该数据文件保存在Windows目录下;步骤2,读取所述数据文件占用磁盘容量的容量值;步骤3,创建所述数据文件的Windows内存映射;步骤4,载入恢复工具里配置的Nand Flash存储器型号,获取该Nand Flash存储器的块大小、页大小以及OOB区的信息,并读取SQLite数据库的文件页大小以及页数量分别在当前SQLite数据库版本的文件头偏移;其中,OOB区的信息包括写入序号、记录对象ID、记录的chunkID以及chunk的有效字节数;步骤5,根据读取的所述数据文件的容量值以及获取的Nand Flash存储器的块大小值,计算出该数据文件包含的块数量,并计算出该数据文件包含的页数量;其中,该数据文件包含的页数量为该数据文件所包含各块中的页数量与该数据文件包含的块数量之间的乘积值,各块中的页数量为Nand Flash存储器的块大小值与页大小值之间的比值;步骤6,对所得所述数据文件内的所有页面做遍历查找:当遍历查找到包含"SQLite format 3"字节数组且位于页面的0字节开始位置处的页面时,转入步骤7;否则,表明遍历的当前数据文件内未包含需要的SQLite数据库文件,则反馈无法恢复SQLite数据或该SQLite数据不存的提示信息;步骤7,记录查找到的该页面的Nand Flash物理页面号,读取该Nand Flash物理页面号所对应Nand Flash存储器的OOB区的信息,并由记录的Nand Flash物理页面号和OOB区的信息形成查找表;步骤8,将形成的所述查找表按照写入序号排序,找到具有最大写入序号的页面,将该具有最大写入序号的页面作为目标页面,获取位于所述查找表内且与SQLite数据库的文件头页面相对应的信息;步骤9,读取SQLite数据库的文件头页面,获取SQLite数据库文件的页大小值和页数量值,得到SQLite数据库文件的文件大小值;其中,SQLite数据库文件的文件大小值为SQLite数据库文件的页大小值和页数量值之间的乘积;步骤10,在恢复工具配置文件预设的指定Windows目录下生成空白的db文件;步骤11,建立针对所述空白的db文件的内存映射;步骤12,根据SQLite数据库文件的文件头页面在所述查找表中的chunk有效字节数,将Nand Flash物理页面数据从Nand Flash存储器的数据文件中读取出来,并将读取出来的Nand Flash物理页面数据写入到所述db文件内第0字节开始的位置;步骤13,再次对整个Nand Flash存储器的数据文件...

【专利技术属性】
技术研发人员:楼鹏
申请(专利权)人:宁波三星医疗电气股份有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1