Oracle BBED工具介绍(二)
|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] =
SUM [ DBA | FILE | FILENAME | BLOCK ] [ APPLY ]
PUSH [ DBA | FILE | FILENAME | BLOCK | OFFSET ]
POP [ALL]
REVERT [ DBA | FILE | FILENAME | BLOCK ]
UNDO
HELP [ | 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
二. 实验测试
先建个表,插入1条数据。
SQL> create table dave(name varchar(20)) tablespace users;
Table created.
SQL> insert into dave values(‘dmm’);
1 row created.
SQL> commit;
Commit complete.
SQL>select segment_name,file_id,block_id,blocks from dba_extents
where segment_name='DAVE'; -- 名称要大写,不然查不到结果
SEGMENT_NA FILE_ID BLOCK_ID BLOCKS
---------- ---------- ---------- ----------
DAVE 4 17 8
表存放在file 4 block 17: 17+8 上面.
先关闭数据库,对users数据文件作个cp。
SQL> shutdown immediate
[oracle@vm1 test]$ cp users01.dbf users01.dbf.bak
SQL> startup
重新启动完数据库,进入bbed
$ ./bbed parfile=bbed.par
Password:
BBED: Release 2.0.0.0.0 - Limited Production on Sat Dec 12 01:10:34 2009
Copyright (c) 1982, 2005, Oracle. All rights reserved.
************* !!! For Oracle Internal Use only !!! ***************
BBED> set file 4
FILE# 4
BBED> show
FILE# 4
BLOCK# 1
OFFSET 0
DBA 0x01000001 (16777217 4,1)
FILENAME /export/home/oradata/orcl/users01.dbf
BIFILE bifile.bbd
LISTFILE filelist.txt
BLOCKSIZE 8192
MODE Edit
EDIT Unrecoverable
IBASE Dec
OBASE Dec
WIDTH 80
COUNT 512
LOGFILE log.bbd
SPOOL No
刚才创建的dave表在file 4 blcok 17 - 17+8上面,用bbed看看17的内容
BBED> dump file 4 block 17 count 512
File: /export/home/oradata/orcl/users01.dbf (4)
Block: 17 Offsets: 0 to 511 Dba:0x01000011
------------------------------------------------------------------------
00a20000 11000000 00000000 00000105 11a70000 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
<32 bytes per line>
offset 偏移量 从 0 到 511 单位是字节,数据块是8k的,想看完全就要扩大offset的范围
BBED> dump file 4 block 9 count 8200
File: /export/home/oradata/orcl/users01.dbf (4)
Block: 17 Offsets: 0 to 8191 Dba:0x01000011
----------------------------------