您的位置:首页 > 数据库 > Oracle

Oracle之BBED之BBED的编译及简单设置(一)

2016-04-12 21:41 507 查看
一、BBED简介:

BBED(Oracle Block Browerand EDitor Tool),用来直接查看和修改数据文件数据的一个工具,是Oracle一款内部工具,可以直接修改Oracle数据文件块的内容,在一些极端恢复场景下比较有用。该工具不受Oracle支持,所以默认是没有生成可执行文件的,在使用前需要重新连接。

二、BBED的编译和安装

本文特指在linux环境中编译安装,在windows中是没有的。

在9i或10g中直接编译生成

[oracle@Oracle10g ~]$ cd /u01/app/oracle/product/10.2.0/db_1/rdbms     

[oracle@Oracle10g lib]$ make -f ins_rdbms.mk $ORACLE_HOME/rdbms/lib/bbed

查看生成bbed

[oracle@Oracle10g lib]$ ls

bbed          kecwr.o         libqsmashr.a  skfodpt.o

config.c      kfod.o          libskgxns.a   skrmpt.o

config.o      kgupc.o         libskgxpd.a   skrnpt.o

cursize.o     kgutc.o         libskgxpg.a   skrspt.o

dbfsize.o     kkpoban.o       libskgxpr.a   sllfls.o

defopt.o      kkxntp.o        libskgxpu.a   srfsd.o

dmndm.o       kkxwtp.o        libxdb.a      ssbbded.o

dmndmse.o     kopc.o          mapsga.o      sskfeded.o

其他文件略

以上生成的BBED可执行文件在¥ORACLE_HOME/rdbms/lib目录中,可以复制到其他位置或者其他不同的Oracle版本的机器上运行。

也可以通过以下命令将bbed生成到$ORACLE_HOME/bin目录(注意和直接编译生成的不同)

[oracle@Oracle10g lib]$ make -f ins_rdbms.mk BBED=$ORACLE_HOME/bin/bbed $ORACLE_HOME/bin/bbed

由于Oracle Database 11g中没有提供BBED库文件,但是可以用10g的文件编译出来,需要先从10g中复制如下文件到相应目录,然后再执行上述命令,参考如下步骤:

(1)复制Oracle10g文件(注意目录不同)

Copy $ORA10g_HOME/rdbms/lib/ssbbded.o to$ORA11g_HOME/rdbms/lib

Copy $ORA10g_HOME/rdbms/lib/sbbdpt.o to $ORA11g_HOME/rdbms/lib

Copy $ORA10g_HOME/rdbms/mesg/bbedus.msb to $ORA11g_HOME/rdbms/mesg

Copy $ORA10g_HOME/rdbms/mesg/bbedus.msg to $ORA11g_HOME/rdbms/mesg

Copy $ORA10g_HOME/rdbms/mesg/bbedar.msb to $ORA11g_HOME/rdbms/mesg

(2)编译

[oracle@Oracle11gR2 lib]$ make -f ins_rdbms.mk BBED=$ORACLE_HOME/bin/bbed $ORACLE_HOME/bin/bbed

2.使用BBED

BBED是Oracle内部使用的命令,默认密码是blockedit

[oracle@Oracle11gR2 lib]$ bbed

Password: (blockedit)

BBED: Release 2.0.0.0.0 - Limited Production on Sat Apr 9 08:36:43 2016

Copyright (c) 1982, 2011, Oracle and/or its affiliates.  All rights reserved.

************* !!! For Oracle Internal Use only !!! ***************

BBED> 

相关参数可以使用help进行查看:

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 ]

下面是几个常用的:

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命令:
1)设置listfile

BBED> set listfile '/home/oracle/bbed.list' 

BBED-00300: unable to translate filename(报错是正常的,可以通过show all查看配置)

2)设置filename

BBED> set filename '/u01/app/oracle/oradata/test.dbf' 
FILENAME      
/u01/app/oracle/oradata/test.dbf

3)设置BLOCK(通过rowid获取)

BBED> set BLOCK 135
BLOCK#        
135

4)设置count

BBED> set count 8192 
COUNT          
8192

5)设置file(通过rowid获取)

BBED> set file 5
FILE#          
5

6)通过show all查看BBED配置

BBED> show all
FILE#          
0
BLOCK#        
135
OFFSET        
0
DBA            
0x00000000 (0 0,135)
FILENAME      
/u01/app/oracle/oradata/test.dbf
BIFILE        
bifile.bbd
LISTFILE      
/home/oracle/bbed.list
BLOCKSIZE      
8192
MODE          
Browse
EDIT          
Unrecoverable
IBASE          
Dec
OBASE          
Dec
WIDTH          
80
COUNT          
8192
LOGFILE        
log.bbd
SPOOL          
N

7)dump文件

BBED> dump

 File: /u01/app/oracle/oradata/test.dbf (5)

 Block: 135              Offsets:    0 to 8191           Dba:0x01400087

------------------------------------------------------------------------

 06a20000 87004001 d5850400 00000406 80a40000 01000000 bd350000 38710400 

 00000000 02003200 80004001 09001200 de000000 4b59c000 26003200 03200000 

 d5850400 00000000 00000000 00000000 00000000 00000000 00000000 00000000 

 00000000 00010300 ffff1800 711f591f 591f0000 03008b1f 7e1f711f 00000000 

 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 

 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 

 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 

 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 

 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

………………中间略……………………

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 

 00000000 00000000 00000000 00000000 00000000 002c0102 02c10406 43434343 

 43432c01 0202c103 06424242 4242422c 010202c1 02064141 41414141 0406d585
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  oracle