1:安装: 11g R2 版的
cd $ORACLE_HOME/
find . -name ins_rdbms.mk
cd rdbms/lib
make -f ins_rdbms.mk $ORACLE_HOME/rdbms/lib/bbed
在11g会报错。需要在网上下载三个文件。或者你有10g 的库直接把10g的文件拷过来:
附上下载地址: http://download.csdn.net/detail/jycjyc/4578006
将下载到的bbedus.msb拷贝到上一级目录mesg中 cp lib/bbedus.msb mesg/
之后再执行 make -f ins_rdbms.mk $ORACLE_HOME/rdbms/lib/bbed
$./bbed
进去后bbed 密码是:blockedit
2:配置查看:
然后就是show all 看一下要做哪些预配:
在另一个窗口中找出要操作的文件select * from v$datafile;
那这里我们可以插入一条记录,看看文件究竟是被真的插入到那:用到dbms_rowid 这个包
select dbms_rowid.ROWID_RELATIVE_FNO(rowid), dbms_rowid.ROWID_BLOCK_NUMBER(rowid),id from t4;
查出来真正插入的数据在 2号文件121号块接下来设置filename ,file ,block ,blocksize ,mode
set FILENAME '/u01/app/oracle/test/data/test_01.dbf'
set file 2
set block 121
set blocksize 8192
set mode edit //edit 是可以修改, browse 模式不允许进行修改
bbed 中的查找: find
bbed> set block 47 //读47号块
bbed>dump // 显示出dump
> show all;
可以看下偏移量。OFFSET
以字符串查找/c
>find /c BBBBBBB
find 就是查找并重置偏移量。
按十六进制查找:
> find /x 42424242424242
有时报invalid number 那是因为 32 位 的错。
修改命令: modify /c
bbed > modify /c EEEEEEE
此时再来查看原先的数据:
select * from t1;
如果现在报block corrupted:
那这是由于校验和的问题:可以设置把校验和关掉:
show parameter check;
1)
更改db_block_checksum = false;
alter system set db_block_checksum=false;
再刷新下buffer_cache ;
alter system flush buffer_cache;
select * from t1;
2) 还有一种更好的办法:
直接更改校验和
bbed> sum apply
然后回去在刷新次buffer_cache
alter system flush buffer_cache