bbed 命令测试记录,备查吧

本文深入探讨了Oracle数据库管理系统中的B-BED命令,包括其安装、配置、基本用法及常见参数解释,并通过示例演示了如何使用B-BED命令进行数据浏览、编辑、备份及恢复等操作。

在linux上面有,需要编译:

cd $ORACLE_HOME/rdbms/lib

make -f ins_rdbms.mk BBED=$ORACLE_HOME/rdbms/lib/bbed $ORACLE_HOME/bin/bbed

或者

make –f ins_rdbms.mk $ORACLE_HOME/rdbms/lib/bbed

 

然后把$ORACLE_HOME/rdbms/lib加到环境变量的PATH里面,就可以直接在命令中bbed了。

 

 

口令是blockedit

 

filename 是bbed需要处理的oracle文件名,如果处理单个文件,可以使用这个参数,如果使用多个文件,建议使用listfile来代替这个参数

listfile 对应一个文件名,文件里记录

d:\oracle\1.dbf

d:\oracle\2.dbf

文件id 加上文件名

 

mode 有两个取值,一个是browse,也就是仅仅浏览数据,不做修改。  另外一个取值是edit,就是要修改数据。

blocksize  是数据文件的块大小

spool =yes|no   的含义是否要把操作过程写入日志

cmdfile=文件名  启动bbed 后直接执行的脚本

logfile=文件名  日志文件的名字

parfile =文件名  参数文件的名字,里面写很多参数

bifile  =文件名  修改数据块前可以将修改前映像保存在一个文件里,以便于问问题后使用bifile的内容进行恢复

revert=yes|no  表示是否可以利用bifile 进行回退

slient=yes|no  表示是否可以使用静默模式,适合使用cmdfile的批处理方式

 

bbed  parfile=parfile.txt

 

 

这里有2个 a.txt par.bbd

[oracle@vm1 oracle]$ ls

a.txt bifile.bbd Desktop log.bbd par.bbd

[oracle@vm1 oracle]$ more listfile.txt

6 /u01/oracle/oradata/test/users01.dbf 26222592

2 /u01/oracle/oradata/test/users01.dbf.bak 26222592

[oracle@vm1 oracle]$ more parfile.txt

blocksize=8192

listfile=a.txt

mode=edit

spool=yes

 

 

 

BBED>

 

 

先看看帮助,有那些命令:

 

 

BBED> help

HELP [ <bbed command> | ALL ]

BBED> help ALL

SET DBA [ dba | file#, block# ]

SET FILENAME 'filename'

SET FILE file#

SET BLOCK [ /-]block#

 

SET OFFSET [ [ /-]byte offset | symbol | *symbol ]

SET BLOCKSIZE bytes

SET LIST[FILE] 'filename'

SET WIDTH character_count

SET COUNT bytes_to_display

SET IBASE [ HEX | OCT | DEC ]

SET OBASE [ HEX | OCT | DEC ]

SET MODE [ BROWSE | EDIT ]

SET SPOOL [ Y | N ]

SHOW [ <SET parameter> | ALL ]

 

INFO

MAP[/v] [ DBA | FILENAME | FILE | BLOCK ]

DUMP[/v] [ DBA | FILENAME | FILE | BLOCK | OFFSET | COUNT ]

PRINT[/x|d|u|o|c] [ DBA | FILE | FILENAME | BLOCK | OFFSET | symbol | *symbol ]

EXAMINE[/Nuf] [ DBA | FILE | FILENAME | BLOCK | OFFSET | symbol | *symbol ]

 

</Nuf>:

 

N - a number which specifies a repeat count.

u - a letter which specifies a unit size:

b - b1, ub1 (byte)

h - b2, ub2 (half-word)

w - b4, ub4(word)

r - Oracle table/index row

f - a letter which specifies a display format:

x - hexadecimal

d - decimal

u - unsigned decimal

o - octal

c - character (native)

n - Oracle number

t - Oracle date

i - Oracle rowid

FIND[/x|d|u|o|c] numeric/character string [ TOP | CURR ]

COPY [ DBA | FILE | FILENAME | BLOCK ] TO [ DBA | FILE | FILENAME | BLOCK ]

MODIFY[/x|d|u|o|c] numeric/character string

[ DBA | FILE | FILENAME | BLOCK | OFFSET | symbol | *symbol ]

ASSIGN[/x|d|u|o] <target spec>=<source spec>

<target spec> : [ DBA | FILE | FILENAME | BLOCK | OFFSET | symbol | *symbol ]

<source spec> : [ value | <target spec options> ]

SUM [ DBA | FILE | FILENAME | BLOCK ] [ APPLY ]

PUSH [ DBA | FILE | FILENAME | BLOCK | OFFSET ]

 

POP [ALL]

REVERT [ DBA | FILE | FILENAME | BLOCK ]

UNDO

HELP [ <bbed command> | ALL ]

VERIFY [ DBA | FILE | FILENAME | BLOCK ]

CORRUPT [ DBA | FILE | FILENAME | BLOCK ]

 

 

BBED>

还真不少,下面是几个常用的:

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

 

 --一些命令的演示

set file 4

set offset 70

set count 8192  (显示8k的内容,默认是512bytes)

dump datatfile 4 block 60

set block 60

find  /x  62   (62代表16进制 b,oracle实际储存的值),

find 98 curr  (98 代表二进制b  ascii('b') )

可显示字符 二进制 十进制 十六进制 字符

0110         0001   97     61        ascii码表

modify 97 file 4 blcok 79 offset 8187

modify /x 0x5d offset 1072

verify           --检查当前环境是否有坏块

数据库关闭后,可以拷贝一个文件到外面,修改错误后,可以把原来的块拷贝过来覆盖

拷贝的文件 的文件号 自己命名一个就可以了

copy file 2 block 36 to file 6 block 36

undo   回滚上次操作

revert  回滚所有的

help sum

sum file 4 block 79

sum file 4 block 79 apply

verify  看到数据库正确了

set mode edit

map 查看数据块的结构,当前的

p kcbh  (结构)

p ktbbh.ktbbhitl[1]

p ktbbh.ktbbhitl[1].ktbitflag

map /v   详细一些的结构

modify /x 0x0080 ktbbh.ktbbhit[1].ktbitflag

sum apply

print 530  (offset)

 

flag   0x0080已提交, 0x2001未提交

-----也是0x0004,---U-,也是0x2001

 

如何计算数据块中某个字段的位置

offs=0x232

对于字典类表空间  44 itc*24

对于本地类表空间  52 itl*24

对于自动管理本地表空间 56 itl*24

对于手动管理本地表空间 48 itl*24

 

比如手动管理本地表空间 48 itl*24

 

tab 0, row 12, @0x4c2

tl: 26 fb: --H-FL-- lb: 0x1  cc: 3

col  0: [ 1]  80

col  1: [16]  5f 4e 45 58 54 5f 43 4f 4e 53 54 52 41 49 4e 54

col  2: [ 3]  c2 4a 5f

 

select to_number('4c2','xxxxxx') 1*24 48=1290   1290的位置刚好是80

而如果要看col 2 的位置,那儿要加上 19,也就是1309 才是c2的位置

19=1 16 1 1  也就是说长度也是占有一位

 

 

索引的计算方法

base itl*24 44

row#13[969] flag: ------, lock: 0, len=12, data:(6):  00 40 00 aa 00 0c

col 0; len 3; (3):  c2 4a 5f

select 969 24*2 44 from dual;   还要加上10位,10位就是 lock 00 00 00 40 00 aa 00 0c 03     9位加1为为10为就是c2的值了

提供10g,11g linux及windows BBED工具 及详细编译说明readme文件。 一. 10g linux编译BBED [oracle@node3 ~]$ cd $ORACLE_HOME/rdbms/lib [oracle@node3 lib]$ make -f ins_rdbms.mk BBED=$ORACLE_HOME/bin/bbed $ORACLE_HOME/bin/bbed 直接生成到bin下为可执行文件 编译完成后: 编译成功后登陆BBED,登陆时需要密码(BBED的默认密码是blockedit) [oracle@node3 bin]$ bbed Password: BBED: Release 2.0.0.0.0 - Limited Production on Wed Apr 11 10:01:07 2018 Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved. ************* !!! For Oracle Internal Use only !!! *************** BBED> 二. 11g linux编译BBED oracle 11gR2环境中编译BBED可执行文件所需要的ssbbded.o和sbbdpt.o对象文件被移除,不过可以从oracle 10g环境中将这两个文件拷贝到oracle11g环境进行编译。 除了将上面的ssbbded.o和sbbdpt.o 文件拷贝到11g环境外,BBED还需要用到 $ORACLE_HOME/rdbms/mesg目录下的bbedus.msb这个信息文件, 这几个文件都需要从oracle10g中拷贝到oracle11g中对于的目录中。 文件夹linux_10g_bbed_64 包括了这3个文件。 下面是将以上3个文件从Oracle 10g中拷贝到11g对于目录后编译的过程。 1)把linux_10g_bbed_64目录下的10g的ssbbded.o和sbbdpt.o 放到 $ORACLE_HOME/rdbms/lib 目录下 2)把linux_10g_bbed_64目录下的10g的 bbedus.msb 文件拷贝到 $ORACLE_HOME/rdbms/mesg目录下 3)编译 [oracle@node1 ~] cd $ORACLE_HOME/rdbms/lib [oracle@node1 ~] make -f ins_rdbms.mk BBED=$ORACLE_HOME/bin/bbed $ORACLE_HOME/bin/bbed [oracle@node3 bin]$ bbed Password: BBED: Release 2.0.0.0.0 - Limited Production on Wed Apr 11 10:01:07 2018 Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved. ************* !!! For Oracle Internal Use only !!! *************** BBED> 三、windows 11GR2 bbed oracle9i版本以后Oracle不装载BBED了, Windows上也没有makefile来编译bbed。 所以,如果你想在Windows上使用bbed,你需要很多文件(本下载压缩包已经全包含了): 你需要一个bbed.exe. 你只能从Oracle 9i的安装中得到它。 你需要有一堆的DLL。所有这些DLL在Oracle9i安装中可以得到。 使用BBED需要消息文件。这文件是“bbedus.msb”,位于Oracle9i安装的MESG目录下。而你需要将其复制到ORACLE_HOME的RDBMS\MESG目录下。 这些在目录本压缩包的 bbed_win 中已经全部提供了。 把它们放在BBED安装的目录下(比如D:\bbed_win),环境变量ORACLE_HOME设置好。确保消息文件在$ORACLE_HOME\RDBMS\MESG下,最后启动BBED: D:\bbed_win>bbed Password: BBED: Release 2.0.0.0.0 - Limited Production on Wed Apr 11 10:20:43 2018 Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved. ************* !!! For Oracle Internal Use only !!! *************** BBED>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值