First Impression on BBED: recover deleted rows
Row Flag Structure
在看一个数据块的dump文件的时候,经常会发现类似如下的信息...
tl: 12 fb: --H-FL-- lb: 0x1 cc: 2
其中fb, lb, cc就是每一行数据头的信息,分别表示Row Flag, Lock Byte (ITL entry), Column Count. (tl, 应该表示每一行数据实际占用的空间大小,包括row header, 每一个column实际占用的字节数,和用来存储每个column长度的overhead。 tl的信息并没有实际存储。)
那么ROW Flag中的8个bit分别表示什么意思呢 (例如这里的H, F, L)?
---------------------------------------------------------------------------------------------------------------------
这8个bit从高到低依次是:
(128) : Cluster Key
(64) : Cluster Table Member
(32) : Header of row piece
(16): Deleted
(8) : First data piece
(4) : Last data piece
(2) : First column continues from previous piece
(1) : Last column continues in next piece
----------------------------------------------------------------------------------------------------------------------
因此,如果表中的一行记录完全处于一个block中(没有出现row chain, row migration), 不是属于聚簇表,也没有被删除,那么这一行数据的flag应该就是
32 (Header of row piece) + 8 (First data piece) + 4 (Last data piece) = 44 (0x2c), 这个也就是在dump文件中看到的标识--H-FL--
Recover Deleted Rows
ID NAME
---------- ----------
1 Frank
2 Fraud
SQL> alter system dump datafile 4 block 388;
tab 0, row 0, @0x1f8c
tl: 12 fb: --H-FL-- lb: 0x1 cc: 2
col 0: [ 2] c1 02
col 1: [ 5] 46 72 61 6e 6b
tab 0, row 1, @0x1f80
tl: 12 fb: --H-FL-- lb: 0x1 cc: 2
col 0: [ 2] c1 03
col 1: [ 5] 46 72 61 75 64
1 row deleted.
SQL> commit;
Commit complete.
SQL> alter system dump datafile 4 block 388;
System altered.
tab 0, row 0, @0x1f8c
tl: 12 fb: --H-FL-- lb: 0x0 cc: 2
col 0: [ 2] c1 02
col 1: [ 5] 46 72 61 6e 6b
tab 0, row 1, @0x1f80
tl: 2 fb: --HDFL-- lb: 0x2
end_of_block_dump
DBA 0x01000184 (16777604 4,388)
BBED> p kdbr
sb2 kdbr[0] @118 8076
sb2 kdbr[1] @120 8064
BBED> p *kdbr[1]
rowdata[0]
----------
ub1 rowdata[0] @8164 0x3c
BBED> x /rnc
rowdata[0] @8164
----------
flag@8164: 0x3c (KDRHFL, KDRHFF, KDRHFD, KDRHFH)
lock@8165: 0x02
cols@8166: 0
BBED> dump /v dba 4, 388 offset 8164
File: /u01/app/oracle/oradata/orcl/users01.dbf (4)
Block: 388 Offsets: 8164 to 8191 Dba:0x01000184
-------------------------------------------------------
3c020202 c1030546 72617564 2c000202 l <...�..Fraud,...
c1020546 72616e6b 01069bdb l �..Frank...
<16 bytes per line>
BBED>
File: /u01/app/oracle/oradata/orcl/users01.dbf (4)
Block: 388 Offsets: 8164 to 8191 Dba:0x01000184
------------------------------------------------------------------------
2c020202 c1030546 72617564 2c000202 c1020546 72616e6b 01069bdb
<32 bytes per line>
BBED> dump /v dba 4, 388 offset 8164
File: /u01/app/oracle/oradata/orcl/users01.dbf (4)
Block: 388 Offsets: 8164 to 8191 Dba:0x01000184
-------------------------------------------------------
2c020202 c1030546 72617564 2c000202 l ,...�..Fraud,...
c1020546 72616e6b 01069bdb l �..Frank...
<16 bytes per line>
BBED> p *kdbr[1]
rowdata[0]
----------
ub1 rowdata[0] @8164 0x2c
BBED> x /r
rowdata[0] @8164
----------
flag@8164: 0x2c (KDRHFL, KDRHFF, KDRHFH)
lock@8165: 0x02
cols@8166: 2
col 0[2] @8167: 0xc1 0x03
col 1[5] @8170: 0x46 0x72 0x61 0x75 0x64
BBED> x /rnc
rowdata[0] @8164
----------
flag@8164: 0x2c (KDRHFL, KDRHFF, KDRHFH)
lock@8165: 0x02
cols@8166: 2
col 0[2] @8167: 2
col 1[5] @8170: Fraud
Check value for File 4, Block 388:
current = 0x4fb9, required = 0x4fb9
System altered.
SQL> select * from test;
ID NAME
---------- ----------
1 Frank
2 Fraud
SQL>
转载于:https://www.cnblogs.com/fangwenyu/archive/2011/02/19/1958592.html
First Impression on BBED: recover deleted rows相关推荐
- linux恢复deleted状态的文件,Linux恢复被删除的文件 How To Recover Deleted Files From Your Linux System ....
先介绍一些文件的基本概念, 文件实际上是一个指向inode的链接, inode链接包含了文件的所有属性, 比如权限和所有者, 数据块地址(文件存储在磁盘的这些数据块中). 当你删除(rm)一个文件, ...
- mysql数控不小心被删_mysql 数据库信息不小心被删除了, 请问能恢复么
展开全部 自动备份,另一种方法请看 每个 DBA 是不是都有过删库的经历?删库了没有备份怎么办?备份恢复后无法启动服务什32313133353236313431303231363533e78988e6 ...
- nactive恢复mysql删除数据_navicat for mysql 里删除的数据表及数据有办法恢复吗
展开全部 每个 DBA 是不是都有过删库的经历?62616964757a686964616fe4b893e5b19e31333433626437删库了没有备份怎么办?备份恢复后无法启动服务什么情况?表 ...
- mysql被删库如何恢复_mysql整个数据库被删除了怎么恢复
展开全部 每个 DBA 是不是都有过删库的经e68a84e8a2ad62616964757a686964616f31333433626437历?删库了没有备份怎么办?备份恢复后无法启动服务什么情况?表 ...
- sql delete语句_SQL Delete语句概述
sql delete语句 This article on the SQL Delete is a part of the SQL essential series on key statements, ...
- 在SQL Server中读取事务日志-从黑客到解决方案
The SQL Server transaction log is akin to a 'Black box' in an airliner. It contains all of the recor ...
- 如何利用SQL Server的事务日志?
介绍 (Introduction) SQL Server keeps track of all database modifications and every database transactio ...
- 行存储索引改换成列存储索引_索引策略–第2部分–内存优化表和列存储索引
行存储索引改换成列存储索引 In the first part we started discussion about choosing the right table structure and d ...
- JanusGraph ,生产环境安装
Part 1 Janusgraph 所需组的准备 ######安装ElasticSearch 需要组建包括casandra 和 elasticsearsh 我们需要先在服务器上安装并准备这两个环境.首 ...
最新文章
- css中的代码图标,认识CSS中字体图标(示例代码)
- linux内核设计与实现 中文第三版 pdf_大牛推荐的5本 Linux 经典必读书
- 为什么使用1 * 1 的卷积核
- VS静态库和动态库的区别
- node js fork php,Node.js中execFile,spawn,exec和fork简介
- Linux中sudo免密码
- win10删除开机密码_教你电脑如何设置开机密码_win10教程
- 学习后台第二周(ง •_•)ง
- python和工程造价_不会Python的将慢慢被淘汰!
- 计算任意多边形的面积(已知各顶点的坐标)
- 怎么将两段视频合并在一起?快速操作技巧
- 金蝶BOS开发代码调用过程
- 【css】纯css实现table表格固定表头,表内容滚动
- 智慧校园人脸识别解决方案
- [机缘参悟-35]:鬼谷子-飞箝篇-远程连接、远程控制与远程测试之术
- C1DataGrid for Silverlight 修改 CheckBox 列外观
- 稳扎稳打,贴近生活!提高雅思听力成绩四步走
- 视频压缩 ffmpeg
- Voxel Hashing阅读笔记
- FTXUI基础笔记(botton按钮组件进阶)
热门文章
- docker安装gamit_科学网—Ubuntu系统GAMIT/GLOBK程序安装 - 陈超的博文
- 感知器及其在python中的实现_感知器及其在Python中的实现
- filter执行先后问题_filter的执行顺序是怎样的?
- java jdk 1.8 配置_jdk1.8安装及java环境变量配置(内含一键配置工具)
- python定时关机_python 实现定时关机(windows,python3)
- 入行嵌入式研发10多年,一位工程师悟出这些道理
- 列表_月隐学python第6课
- java 11_JAVA 11初体验
- python写word模板_Python3操作Office之Word模板技术
- 十大笔记本电脑排行_十大笔记本电脑品牌排行榜 世界上最受欢迎的电脑品牌...