> 历史信息查看请查看个人网页www.zhaibibei.cn
> 这是一个坚持Oracle,Python原创内容的公众号,欢迎关注
------
上节我们介绍了使用BBED读取数据文件
这节内容为使用BBED定位数据位置
我们通过定位数据库中表其中一列的具体位置来讲解bbed的操作
[toc]
##1. 数据内容
我们使用FWASSY.MACMATERIALLOT 表中的LOTID列来进行讲解
内容为:W1F1_1600056151+1080801HA3.301
```
select *
from fwassy.MACMATERIALLOT
WHERE lotid = 'W1F1_1600056151+1080801HA3.301'
```
[image:222 size:orig]
--------------
##2. 查看内容属于的数据文件和块号
```
SELECT dbms_rowid.rowid_relative_fno(rowid) REL_FNO,
dbms_rowid.rowid_block_number(rowid) BLOCKNO,
lotid
from fwassy.MACMATERIALLOT
WHERE lotid = 'W1F1_1600056151+1080801HA3.301'
```
[image:223 size:orig]
从结果我们看出该表属于5号文件的1800134数据块
-------------
##3. 使用BBED进入数据块
**3.1 使用上节的内容打开bbed**
```
BBED parfile=bbed.par
```
**3.2 定位到5号文件的5,1800134数据块**
```
BBED> set dba 5,1800134
```
[image:224 size:orig]
这里我们可以使用另外种方法定位
```
BBED> set file 5
BBED> set block 1800134
BBED> show
```
[image:230 size:orig]
**3.3 设置offset确保处在该块的起始位置**
```
BBED> set offset 0
```
[image:225 size:orig]
-----------
##4. 查找lotid内容
**4.1 搜索lotid内容**
c表示搜索字符串
```
BBED> find /c W1F1_1600056151+1080801HA3.301
```
[image:226 size:orig]
从上图中可以看出
该列内容在5号文件的第1800134个数据块中,并偏移4215字节
注意该命令会dump多行数据,每行为32字节
**4.2 dump数据块内容**
以上为二进制文件,接下来转化为可读的内容
count 表示读取多少字节的数据
```
BBED> dump /v dba 5,1800134 offset 4215 count 32
```
[image:227 size:orig]
可以看出已经找到了
-------
##5.验证结果
**5.1 设置偏移量**
上面我们已经定位到了 5,1800134位置,offset是0,接下来我们设定offset为4215
```
BBED> set offset 4215
```
**5.2 dump数据**
dump数据
```
BBED> d /v
```
[image:228 size:orig]
**5.3 dump更多数据**
我们可以使用count参数获取更多数据
```
d /v count 64
```
[image:229 size:orig]
可以看出接下来的内容为该行后面的内容
##6.参考资料
[http://www.dba-oracle.com/t_bbed.htm](http://www.dba-oracle.com/t_bbed.htm)
[https://blog.csdn.net/tianlesoftware/article/details/5006580](https://blog.csdn.net/tianlesoftware/article/details/5006580)
[http://www.dba-oracle.com/forensics/t_forensics_bbed.htm](http://www.dba-oracle.com/forensics/t_forensics_bbed.htm)