一种基于oracle行迁移和行连接的数据提取方法与流程

文档序号:17476772发布日期:2019-04-20 06:10阅读:247来源:国知局
本发明属于数据恢复领域,涉及一种基于oracle行迁移和行连接的数据提取方法。
背景技术
::随着信息时代的来临,对数据的管理和应用都离不开数据库。数据库系统是计算机应用系统的重要组成部分之一。数据库技术已广泛应用于数据处理、信息检索、人工智能等诸多方面,数据库应用技术是从事计算机工作的人员必备的技术之一。甲骨文公司是世界上最大的软件提供商之一。oracledatabase,又名oraclerdbms,或简称oracle。是甲骨文公司的一款关系数据库管理系统。它是在数据库领域一直处于领先地位的产品。可以说oracle数据库系统是目前世界上流行的关系数据库管理系统,系统可移植性好、使用方便、功能强,适用于各类大、中、小、微机环境。在数据库的使用过程中,难免会遇到误操作、人为恶意破坏、软硬件故障等原因对数据库造成损坏,丢失重要数据。此时,对数据库进行恢复,找回数据就至关重要。现有技术中,尚无一种基于oracle行迁移和行连接的数据提取方法。技术实现要素:本发明针对现有技术的不足问题,提出了一种基于oracle行迁移和行连接的数据提取方法,通过查找记录的行管理并判断是否为行迁移和行连接,获取本条记录及下一片数据的位置并进行数据提取,直到提取完整的记录,包括以下步骤:s100:查找并判断当前记录是否为oracle数据的记录,如果是,执行步骤s200,否则结束流程;s200:获取当前记录的行管理;s300:读取当前行管理的首字节标记及列数,用以判断当前记录是否为行迁移和行连接,如果是,执行步骤s400,否则,表示当前记录是完整记录,步骤s100;s400:根据当前首字节标记,判断当前记录是否是头片数据记录,如果是,执行步骤s500,否则,表示当前记录为分片数据记录,执行步骤s600;s500:读取当前行管理的后续记录地址,执行步骤s600;s600:寻址并获取当前记录的当前数据段;s700:判断当前记录的当前数据段是否为结束片,如果是,结束流程,否则,执行步骤s800;s800:根据所述步骤s500中所述后续记录地址,寻址并获取后续记录,执行步骤s200。优选地,所述行管理的数据结构如下表1所示。表1:行管理的数据结构优选地,所述当前数据段的数据结构如下表2所示。表2:当前数据段的数据结构优选地,所述目标文件包括当前目标文件系统所支持的所有类型的文件。优选地,所述行管理包含的1字节长度的所述首字节标记的8个比特位从左至右依次表示为kchdflpn,各个比特位功能如下。k=簇密钥clusterkeyc=簇表成员clustertablememberh=列的头片headpieceofrowd=已删除列deletedrowf=首数据片firstdatapiecel=末数据片lastdatapiecep=接上一片的首列firstcolumncontinuesfrompreviouspiecen=续下一片的末列lastcolumncontinuesinnextpiece优选地,所述步骤s300中,判断当前记录是否为行迁移和行连接的具体方法如下:①如果所述首数据片firstdatapiece比特位f为1,则表示当前记录为第一片记录;②如果所述末数据片lastdatapiece比特位l为1,则表示当前记录为最后一片记录;③如果所述接上一片的首列firstcolumncontinuesfrompreviouspieces2比特位p为1,则表示当前记录的第一列为当前记录从某列中间分隔的下半部分,当前片数据的首列+上一片数据的末列为一个完整的列;④如果所述续下一片的末列lastcolumncontinuesinnextpiece比特位n为1,则表示当前片记录的末列为当前记录从某列中间分隔的上半部分,当前片数据的末列+上一片数据的首列为一个完整的列;⑤列个数为0表示发生行迁移,如果不为0表示发生行连接;如果上述任一比特位为1,表示所述步骤s300中,当前记录为行迁移和行连接,执行步骤s400;如果上述①、②同时为0,表示当前记录为行迁移,执行步骤s400;否则,表示当前记录是完整记录,执行步骤s100;如果上述①、②同时为1,也表示当前记录是完整记录,执行步骤s100。优选地,所述后续记录地址的字节长度为6字节,包括4字节长度的记录索引信息及2字节长度的片段索引信息,其中,所述记录索引信息的4字节长度的32比特位中,高10比特位为文件id,低22比特位为块id;所述片段索引信息表示下一分片在当前块中的位置。本发明的有益效果是解决了现有技术中尚无一种基于oracle行迁移和行连接的数据提取方法的问题。附图说明图1为本发明的流程图。具体实施方式本发明所提供的方法中,首先找到oracle数据库的一条记录;然后读取该条记录的行格式中的首字节标记fb(firstbyte),根据首字节标记fb判断是否为数据记录头片、数据记录分片还是数据记录结束片;之后再根据行格式中的列数来判断是行迁移、行连接;如果是行迁移就按照行迁移的方法提取数据,如果是行连接就按照行连接的方法提取数据。下面结合附图和实施例对本发明作进一步阐述。图1示出了本发明的流程图。如图1所示,本发明的方法包括以下步骤:s100:查找并判断当前记录是否为oracle数据的记录,如果是,执行步骤s200,否则结束流程;s200:获取当前记录的行管理;行管理的数据结构如下表1所示。表1:行管理的数据结构行管理包含的1字节长度的首字节标记的8个比特位从左至右依次表示为kchdflpn,各个比特位功能如下。k=簇密钥clusterkeyc=簇表成员clustertablememberh=列的头片headpieceofrowd=已删除列deletedrowf=首数据片firstdatapiecel=末数据片lastdatapiecep=接上一片的首列firstcolumncontinuesfrompreviouspiecen=续下一片的末列lastcolumncontinuesinnextpieces300:读取当前行管理的首字节标记及列数,用以判断当前记录是否为行迁移和行连接,如果是,执行步骤s400,否则,表示当前记录是完整记录,执行步骤s100;具体方法如下:①如果所述首数据片firstdatapiece比特位f为1,则表示当前记录为第一片记录;②如果所述末数据片lastdatapiece比特位l为1,则表示当前记录为最后一片记录;③如果所述接上一片的首列firstcolumncontinuesfrompreviouspieces2比特位p为1,则表示当前记录的第一列为当前记录从某列中间分隔的下半部分,当前片数据的首列+上一片数据的末列为一个完整的列;④如果所述续下一片的末列lastcolumncontinuesinnextpiece比特位n为1,则表示当前片记录的末列为当前记录从某列中间分隔的上半部分,当前片数据的末列+上一片数据的首列为一个完整的列;⑤列个数为0表示发生行迁移,如果不为0表示发生行连接;如果上述任一比特位为1,表示所述步骤s300中,当前记录为行迁移和行连接,执行步骤s400;如果上述①、②同时为0,表示当前记录为行迁移,执行步骤s400;否则,表示当前记录是完整记录,执行步骤s100;如果上述①、②同时为1,也表示当前记录是完整记录,执行步骤s100。s400:根据当前首字节标记,判断当前记录是否是头片数据记录,如果是,执行步骤s500,否则,表示当前记录为分片数据记录,执行步骤s600;s500:读取当前行管理的后续记录地址,执行步骤s600;后续记录地址的字节长度为6字节,包括4字节长度的记录索引信息及2字节长度的片段索引信息,其中,记录索引信息的4字节长度的32比特位中,高10比特位为文件id,低22比特位为块id;片段索引信息表示下一分片在当前块中的位置。s600:寻址并获取当前记录的当前数据段;当前数据段的数据结构如下表2所示。表2:当前数据段的数据结构因为long类型的字段在块中的字节的长度不会超过64k,所以最多用3字节来表示长度就已经足够,再长就采用链接行,因此,当前列内容的长度超过250字节时就用3字节来表示当前列内容的长度。列内容的长度由如下方法来确定:①1字节:列内容的长度的内容小于0xfa,表示当前列内容的长度为1字节;②3字节:列内容的长度的内容不小于0xfa,表示当前列内容的长度为3字节;③1字节:列内容的长度的内容为0xff,表示当前列内容为数字类型的null值且其长度为1字节;s700:判断当前记录的当前数据段是否为结束片,如果是,结束流程,否则,执行步骤s800;s800:根据步骤s500中后续记录地址,寻址并获取后续记录,执行步骤s200。通过本发明提供的方法,解决了现有技术中尚无一种基于oracle行迁移和行连接的数据提取方法的技术问题。应当理解的是,本发明不限于上述的举例,对本领域普通技术人员来说,可以根据上述说明加以改进或变换,所有这些改进和变换都应属于本发明所附权利要求的保护范围。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1