Oracle使用BBED定位底层二进制数据位置

Oracle使用BBED定位底层二进制数据位置

1. 数据内容

我们使用test.dba_test 表中的name列来进行讲解 内容为:dba_fashion

select *
  from test.dba_test
 WHERE name = 'dba_fashion';  

在这里插入图片描述

2. 查看内容属于的数据文件和块号

SELECT dbms_rowid.rowid_relative_fno(rowid) REL_FNO,
       dbms_rowid.rowid_block_number(rowid) BLOCKNO,
       name
  from test.dba_test
 WHERE name = 'dba_fashion';  

在这里插入图片描述
从结果我们看出该表属于6号文件的156数据块

3. 使用BBED进入数据块

3.1 使用上节的内容打开bbed

BBED parfile=/home/oracle/bbed.par

3.2 定位到6号文件的6,156数据块

BBED> set dba 6,156

在这里插入图片描述

这里我们可以使用另外种方法定位

BBED> set file 6
BBED> set block 156
BBED> show

在这里插入图片描述

3.3 设置offset确保处在该块的起始位置

BBED> set offset 0

4. 查找name内容

4.1 搜索name内容

c表示搜索字符串

BBED> find /c dba_fashion

在这里插入图片描述
从上图中可以看出
该列内容在6号文件的第156个数据块中,并偏移量为8163字节
注意该命令会dump多行数据,每行为32字节

4.2 dump数据块内容

以上为二进制文件,接下来转化为可读的内容
count 表示读取多少字节的数据

BBED>  dump /v dba 6,156 offset 8163 count 32 

在这里插入图片描述

可以看出已经找到表中2行记录了。原因是dba_fashion 只占11个字节。再搜1次。

BBED>  dump /v dba 6,156 offset 8163 count 11 

在这里插入图片描述

5.验证结果

5.1 设置偏移量

上面我们已经定位到了 6,156数据块位置,offset是0,接下来我们设定offset为8163

BBED> set offset 8163

在这里插入图片描述

5.2 dump数据

dump数据
BBED> d /v
在这里插入图片描述

5.3 dump更多数据

我们可以使用count参数获取更多数据方法如下
d /v count 64
表数据量更多,可以将count n设置更大。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

fashion186

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值