加入收藏 | 设为首页 | 会员中心 | 我要投稿 济源站长网 (https://www.0391zz.cn/)- 数据工具、数据仓库、行业智能、CDN、运营!
当前位置: 首页 > 站长百科 > 正文

oracle--BBED (dump 深入实践三)

发布时间:2021-03-15 16:35:30 所属栏目:站长百科 来源:网络整理
导读:一,工具介绍 bbed是Block Browser and Editor(块浏览编辑器)的缩写,它是Oracle数据库在安装时一起附带的工具。 ?????? 一般此工具倾向于仅作为Oracle内部使用,且Oracle公司并不公开此工具使用细节。 ?? ? ? 由于bbed可以对Oracle数据库中的数据块进行内

?

BBED> set blocksize 8192  --块大小
BBED> set listfile ‘bbed.txt‘ --文件位置
BBED> set width 200  -- 设置屏幕显示宽度
BBED> set count 512 --设置dump命令显示的字节数,默认是512bytes
BBED> set mode browse -- 设置模式
or
BBED> set mode edit

?

BBED> map  --查看当前位置
 File: /u01/app/oracle/oradata/oracle01/system01.dbf (1)
 Block: 1                                     Dba:0x00400001
------------------------------------------------------------
 Data File Header

 struct kcvfh,860 bytes                    @0

 ub4 tailchk                                @8188


BBED> set filename ‘/u01/app/oracle/oradata/oracle01/test101.dbf‘
    FILENAME           /u01/app/oracle/oradata/oracle01/test101.dbf
--指定文件
BBED> map  --当前位置
 File: /u01/app/oracle/oradata/oracle01/test101.dbf (7)
 Block: 1                                     Dba:0x01c00001
------------------------------------------------------------
 Data File Header

 struct kcvfh,860 bytes                    @0

 ub4 tailchk                                @8188

?

--查看全部信息
BBED>  show all
    FILE#              7
    BLOCK#             1
    OFFSET             0
    DBA                0x01c00001 (29360129 7,1)
    FILENAME           /u01/app/oracle/oradata/oracle01/test101.dbf
    BIFILE             bifile.bbd
    LISTFILE           bbed.txt
    BLOCKSIZE          8192
    MODE               Edit
    EDIT               Unrecoverable
    IBASE              Dec
    OBASE              Dec
    WIDTH              80
    COUNT              512
    LOGFILE            log.bbd
    SPOOL              No

?

BBED> help all

set 设定当前的环境
show 查看当前的环境参数,跟sqlplus的同名命令类似。
dump 列出指定block的内容
find 在指定的block中查找指定的字符串,结果是显示出字符串,及其偏移量--offset,偏移量就是在block中的字节数
modify 修改指定block的指定偏移量的值,可以在线修改。
copy 把一个block的内容copy到另一个block中
verify 检查当前环境是否有坏块
sum 计算block的checksum,modify之后block就被标识为坏块,current checksum与reqired checksum不一致,sum命令可以计算出新的checksum并应用到当前块。
undo 回滚当前的修改操作,如果手误做错了,undo一下就ok了,回到原来的状态。
revert 回滚所有之前的修改操作,意思就是 undo all

?五,一顿操作

BBED> map
 File: /u01/app/oracle/oradata/oracle01/test101.dbf (7)
 Block: 132                                   Dba:0x01c00084
------------------------------------------------------------
 KTB Data Block (Table/Cluster)

 struct kcbh,20 bytes                      @0  --块头信息,cache layer

 struct ktbbh,72 bytes                     @20 --事务信息,transaction layer

 struct kdbh,14 bytes                      @100 --对应数据头,占用14字节

 struct kdbt[1],4 bytes                    @114 --表目录*kdbt[0]指针显示值

 sb2 kdbr[4]                                @118 --行目录 *kdbr[0]指针值显示状态flg

 ub1 freespace[8016]                        @126 --空闲空间

 ub1 rowdata[46]                            @8142   --行数据

 ub4 tailchk                                @8188 --tail check

这个是文件7,块132的,整个块的数据结构。可以看到行数据时从下开始增加的,空闲的空间是在中间。
后面@开头的表示在该块的偏移。
@0表示该块开始的地方开始。

@20表示从第20个字节开始。那么0~19个字节就是 block-header的信息了。


可以看到数据是再8142开始我们dump 下这个数据看

BBED> dump /v dba 7,132 offset 8142 count 64
 File: /u01/app/oracle/oradata/oracle01/test101.dbf (7)
 Block: 132     Offsets: 8142 to 8191  Dba:0x01c00084
-------------------------------------------------------
 2c010202 c1020371 77652c00 0202c104 l,...??.qwe,...??
 05454545 45452c00 0202c103 05424242 l .EEEEE,...??.BBB
 42422c00 0202c102 05414141 41410106 l BB,...??.AAAAA..
 652c                                l e,<16 bytes per line>

能看到这些数据再这里显示了
这些数据的话也能通过find 查询到
BBED> find /c AAAAA
 File: /u01/app/oracle/oradata/oracle01/test101.dbf (7)
 Block: 132              Offsets: 8183 to 8191           Dba:0x01c00084
------------------------------------------------------------------------
 41414141 41010665 2c

 <32 bytes per line>

从8183开始显示这个字段信息
我们就dump 这一点点
BBED> dump /v dba 7,132 offset 8183
?File: /u01/app/oracle/oradata/oracle01/test101.dbf (7)
?Block: 132???? Offsets: 8183 to 8191? Dba:0x01c00084
-------------------------------------------------------
?41414141 41010665 2c??????????????? l AAAAA..e,

?<16 bytes per line>
这个就是数据字段了

(编辑:济源站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读