CN109657015B - 一种基于oracle行迁移和行连接的数据提取方法 - Google Patents
一种基于oracle行迁移和行连接的数据提取方法 Download PDFInfo
- Publication number
- CN109657015B CN109657015B CN201811588895.XA CN201811588895A CN109657015B CN 109657015 B CN109657015 B CN 109657015B CN 201811588895 A CN201811588895 A CN 201811588895A CN 109657015 B CN109657015 B CN 109657015B
- Authority
- CN
- China
- Prior art keywords
- record
- current
- data
- row
- column
- 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
Links
Images
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种基于oracle行迁移和行连接的数据提取方法,其特征在于包括以下步骤:S100:查找并判断当前记录是否为oracle数据的记录,如果是,执行步骤S200,否则结束流程;S200:获取当前记录的行管理;S300:判断当前记录是否为行迁移和行连接,如果是,执行步骤S400,否则,表示当前记录是完整记录,步骤S100;S400:判断当前记录是否是头片数据记录,如果是,执行步骤S500,否则,表示当前记录为分片数据记录,执行步骤S600;S500:读取当前行管理的后续记录地址,执行步骤S600;S600:寻址并获取当前记录的当前数据段;S700:判断当前记录的当前数据段是否为结束片,如果是,结束流程,否则,执行步骤S800;S800:根据后续记录地址,寻址并获取后续记录,执行步骤S200。
Description
技术领域
本发明属于数据恢复领域,涉及一种基于oracle行迁移和行连接的数据提取方法。
背景技术
随着信息时代的来临,对数据的管理和应用都离不开数据库。数据库***是计算机应用***的重要组成部分之一。数据库技术已广泛应用于数据处理、信息检索、人工智能等诸多方面,数据库应用技术是从事计算机工作的人员必备的技术之一。
甲骨文公司是世界上最大的软件提供商之一。Oracle Database,又名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=簇密钥Cluster Key
C=簇表成员Cluster table member
H=列的头片Head piece of row
D=已删除列Deleted row
F=首数据片First data piece
L=末数据片Last data piece
P=接上一片的首列First column continues from previous piece
N=续下一片的末列Last column continues in next piece
优选地,所述步骤S300中,判断当前记录是否为行迁移和行连接的具体方法如下:
①如果所述首数据片First data piece比特位F为1,则表示当前记录为第一片记录;
②如果所述末数据片Last data piece比特位L为1,则表示当前记录为最后一片记录;
③如果所述接上一片的首列First column continues from previous piece S2比特位P为1,则表示当前记录的第一列为当前记录从某列中间分隔的下半部分,当前片数据的首列+上一片数据的末列为一个完整的列;
④如果所述续下一片的末列Last column continues in next piece比特位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(first byte),根据首字节标记fb判断是否为数据记录头片、数据记录分片还是数据记录结束片;之后再根据行格式中的列数来判断是行迁移、行连接;如果是行迁移就按照行迁移的方法提取数据,如果是行连接就按照行连接的方法提取数据。下面结合附图和实施例对本发明作进一步阐述。
图1示出了本发明的流程图。
如图1所示,本发明的方法包括以下步骤:
S100:查找并判断当前记录是否为oracle数据的记录,如果是,执行步骤S200,否则结束流程;
S200:获取当前记录的行管理;
行管理的数据结构如下表1所示。
表1:行管理的数据结构
行管理包含的1字节长度的首字节标记的8个比特位从左至右依次表示为KCHDFLPN,各个比特位功能如下。
K=簇密钥Cluster Key
C=簇表成员Cluster table member
H=列的头片Head piece of row
D=已删除列Deleted row
F=首数据片First data piece
L=末数据片Last data piece
P=接上一片的首列First column continues from previous piece
N=续下一片的末列Last column continues in next piece
S300:读取当前行管理的首字节标记及列数,用以判断当前记录是否为行迁移和行连接,如果是,执行步骤S400,否则,表示当前记录是完整记录,执行步骤S100;
具体方法如下:
①如果所述首数据片First data piece比特位F为1,则表示当前记录为第一片记录;
②如果所述末数据片Last data piece比特位L为1,则表示当前记录为最后一片记录;
③如果所述接上一片的首列First column continues from previous piece S2比特位P为1,则表示当前记录的第一列为当前记录从某列中间分隔的下半部分,当前片数据的首列+上一片数据的末列为一个完整的列;
④如果所述续下一片的末列Last column continues in next piece比特位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行迁移和行连接的数据提取方法的技术问题。
应当理解的是,本发明不限于上述的举例,对本领域普通技术人员来说,可以根据上述说明加以改进或变换,所有这些改进和变换都应属于本发明所附权利要求的保护范围。
Claims (5)
1.一种基于oracle行迁移和行连接的数据提取方法,其特征在于包括以下步骤:
S100:查找并判断当前记录是否为oracle数据的记录,如果是,执行步骤S200,否则结束流程;
S200:获取当前记录的行管理,所述行管理的数据结构如下表1所示;
表1:行管理的数据结构
S300:读取当前行管理的首字节标记及列数,用以判断当前记录是否为行迁移和行连接,如果是,执行步骤S400,否则,表示当前记录是完整记录,执行步骤S100;
S400:根据当前首字节标记,判断当前记录是否是头片数据记录,如果是,执行步骤S500,否则,表示当前记录为分片数据记录,执行步骤S600;
S500:读取当前行管理的后续记录地址,执行步骤S600;
S600:寻址并获取当前记录的当前数据段;
S700:判断当前记录的当前数据段是否为结束片,如果是,结束流程,否则,执行步骤S800;
S800:根据所述步骤S500中所述后续记录地址,寻址并获取后续记录,执行步骤S200。
3.根据权利要求2所述的一种基于oracle行迁移和行连接的数据提取方法,其特征在于,所述行管理包含的1字节长度的所述首字节标记的8个比特位从左至右依次表示为KCHDFLPN,各个比特位功能如下
K=簇密钥ClusterKey
C=簇表成员Clustertablemember
H=列的头片Headpieceofrow
D=已删除列Deletedrow
F=首数据片Firstdatapiece
L=末数据片Lastdatapiece
P=接上一片的首列Firstcolumncontinuesfrompreviouspiece
N=续下一片的末列Lastcolumncontinuesinnextpiece。
4.根据权利要求3所述的一种基于oracle行迁移和行连接的数据提取方法,其特征在于,所述步骤S300中,判断当前记录是否为行迁移和行连接的具体方法如下:
①如果所述首数据片Firstdatapiece比特位F为1,则表示当前记录为第一片记录;
②如果所述末数据片Lastdatapiece比特位L为1,则表示当前记录为最后一片记录;
③如果所述接上一片的首列Firstcolumncontinuesfromprevious pieceS2比特位P为1,则表示当前记录的第一列为当前记录从某列中间分隔的下半部分,当前片数据的首列+上一片数据的末列为一个完整的列;
④如果所述续下一片的末列Lastcolumncontinuesinnextpiece比特位N为1,则表示当前片记录的末列为当前记录从某列中间分隔的上半部分,当前片数据的末列+上一片数据的首列为一个完整的列;
⑤列个数为0表示发生行迁移,如果不为0表示发生行连接;
如果上述任一比特位为1,表示所述步骤S300中,当前记录为行迁移和行连接,执行步骤S400;
如果上述①、②的比特位同时为0,表示当前记录为行迁移,执行步骤S400;
否则,表示当前记录是完整记录,执行步骤S100;
如果上述①、②的比特位同时为1,也表示当前记录是完整记录,执行步骤S100。
5.根据权利要求4所述的一种基于oracle行迁移和行连接的数据提取方法,其特征在于,所述后续记录地址的字节长度为6字节,包括4字节长度的记录索引信息及2字节长度的片段索引信息,其中,
所述记录索引信息的4字节长度的32比特位中,高10比特位为文件ID,低22比特位为块ID;
所述片段索引信息表示下一分片在当前块中的位置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811588895.XA CN109657015B (zh) | 2018-12-25 | 2018-12-25 | 一种基于oracle行迁移和行连接的数据提取方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811588895.XA CN109657015B (zh) | 2018-12-25 | 2018-12-25 | 一种基于oracle行迁移和行连接的数据提取方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109657015A CN109657015A (zh) | 2019-04-19 |
CN109657015B true CN109657015B (zh) | 2023-05-02 |
Family
ID=66115095
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811588895.XA Active CN109657015B (zh) | 2018-12-25 | 2018-12-25 | 一种基于oracle行迁移和行连接的数据提取方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109657015B (zh) |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101533675A (zh) * | 2008-03-11 | 2009-09-16 | 深圳市朗科科技股份有限公司 | 闪存介质扫描和管理方法 |
CN105324770A (zh) * | 2013-04-30 | 2016-02-10 | 亚马逊科技公司 | 有效读出副本 |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3703874B2 (ja) * | 1995-03-17 | 2005-10-05 | 富士通株式会社 | ファイル管理方法及びファイル管理装置 |
JP2004185270A (ja) * | 2002-12-03 | 2004-07-02 | Fujitsu Ltd | アンロードプログラム,ロードプログラム及びデータ移行方法 |
JP4306281B2 (ja) * | 2003-02-27 | 2009-07-29 | 富士通株式会社 | リレーショナルデータベースにおける階層型データのマッピングプログラム、装置、および方法 |
CN101686144A (zh) * | 2008-09-22 | 2010-03-31 | 华为技术有限公司 | 一种处理数据的方法、***和节点设备 |
CN102571949B (zh) * | 2011-12-31 | 2014-05-07 | 河海大学 | 一种基于网络的数据自毁方法 |
US9230008B2 (en) * | 2012-04-12 | 2016-01-05 | Ca, Inc. | System and method for automated online reorganization of sequential access databases |
US9684687B1 (en) * | 2014-03-10 | 2017-06-20 | Ca, Inc. | Multi-phase data expiration path for a database |
JP6668785B2 (ja) * | 2016-01-29 | 2020-03-18 | 日本電気株式会社 | 情報処理システム、記憶制御装置、記憶制御方法および記憶制御プログラム |
US11880716B2 (en) * | 2020-08-05 | 2024-01-23 | Ocient Holdings LLC | Parallelized segment generation via key-based subdivision in database systems |
CN113076221B (zh) * | 2021-03-30 | 2023-05-02 | 四川效率源信息安全技术股份有限公司 | 一种针对MongoDB-MMAPv1引擎的数据恢复方法 |
-
2018
- 2018-12-25 CN CN201811588895.XA patent/CN109657015B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101533675A (zh) * | 2008-03-11 | 2009-09-16 | 深圳市朗科科技股份有限公司 | 闪存介质扫描和管理方法 |
CN105324770A (zh) * | 2013-04-30 | 2016-02-10 | 亚马逊科技公司 | 有效读出副本 |
Also Published As
Publication number | Publication date |
---|---|
CN109657015A (zh) | 2019-04-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110879813B (zh) | 一种基于二进制日志解析的MySQL数据库增量同步实现方法 | |
CN108563711B (zh) | 一种基于时间节点的时序数据存储方法 | |
CN102129478B (zh) | 数据库同步方法及*** | |
EP1480132B1 (en) | System and method for identifying and storing changes made to a table | |
WO2020103493A1 (zh) | 基于fat32文件***的删除文件恢复方法及*** | |
CN100433019C (zh) | 一种数据存储与检索的方法及*** | |
CN110569390B (zh) | 基于区分存储介质的海量案件数据高效检索方法 | |
KR101547466B1 (ko) | 오라클 데이터베이스에서 데이터를 복원하는 방법 및 장치 | |
CN112835918A (zh) | 一种MySQL数据库增量同步实现方法 | |
CN113961153A (zh) | 一种索引数据写入磁盘的方法、装置及终端设备 | |
CN107273449B (zh) | 一种基于内存数据库的断点处理方法及*** | |
CN107169003B (zh) | 一种数据关联方法及装置 | |
CN109657015B (zh) | 一种基于oracle行迁移和行连接的数据提取方法 | |
CN109344163B (zh) | 一种数据校验方法、装置和计算机可读介质 | |
CN111694853B (zh) | 基于世系的数据增量采集方法、装置、存储介质和电子设备 | |
CN110297781B (zh) | 一种基于写时复制来恢复apfs中被删除数据的方法 | |
CN111813773A (zh) | 一种电网抄表数据存储方法、上传方法、装置和存储装置 | |
CN108021472B (zh) | ReFS文件***的格式化恢复方法及存储介质 | |
CN112394876A (zh) | 大文件存储/读取方法、存储/读取装置和计算机设备 | |
Azeem | The Data Carving-The Art of Retrieving Deleted Data as Evidence | |
CN114416751A (zh) | 一种基于倍增位图的rbac优化算法 | |
CN112307233A (zh) | 基于区块链的云存储中的重复图像删除方法和*** | |
US10037148B2 (en) | Facilitating reverse reading of sequentially stored, variable-length data | |
CN116166472B (zh) | 一种用于存储数据的数据恢复方法及*** | |
CN109874049B (zh) | 一种优化提取视频帧读取速度的方法 |
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 |