题目部分
在Oracle中,什么是BBED?它有哪些作用?
答案部分
BBED(Block Brower and Editor)是用来直接查看和修改Oracle数据块的一个内部工具,它可以直接修改Oracle数据文件块的内容,在一些极端恢复场景下比较有用。因为该工具不被Oracle服务支持,所以,默认是没有生成可执行文件的,在使用前需要编译生成。
虽然BBED可以在数据库打开的状态下进行修改,但是建议在做任何修改操作之前先关闭数据库,这样可以避免CHECKPOINT进程重写BBED对BLOCK的修改,也避免Oracle在BBED修改完成之前读BLOCK或声明BLOCK为CORRUPT,从而导致一系列的ORA-600内部错误。
BBED的默认密码为blockedit。
在Oracle 11g下,BBED的编译文件需要从Oracle 10g下拷贝。Oracle 10g可直接编译。需要拷贝如下5个文件:
代码语言:javascript复制$ORACLE_HOME/rdbms/lib/ssbbded.o
$ORACLE_HOME/rdbms/lib/sbbdpt.o
$ORACLE_HOME/rdbms/mesg/bbedus.msb
$ORACLE_HOME/rdbms/mesg/bbedus.msg
$ORACLE_HOME/rdbms/mesg/bbedar.msb
拷贝到Oracle 11g下后进行赋权操作:
代码语言:javascript复制ls -l $ORACLE_HOME/rdbms/lib/*sbbd*
ls -l $ORACLE_HOME/rdbms/mesg/bbed*
chown oracle:dba /u01/app/oracle/product/11.2.0/dbhome_1/rdbms/lib/*sbbd*
chown oracle:dba /u01/app/oracle/product/11.2.0/dbhome_1/rdbms/mesg/bbed*
进行编译:
代码语言:javascript复制make -f $ORACLE_HOME/rdbms/lib/ins_rdbms.mk BBED=$ORACLE_HOME/bin/bbed $ORACLE_HOME/bin/bbed
编译成功后,编辑文件/home/oracle/file.txt:
代码语言:javascript复制vi /home/oracle/file.txt
set line 9999 pagesize 9999
col name format a80
select file#||' '||name||' '||bytes name from v$datafile;
输入如下命令即可进入BBED的界面:
代码语言:javascript复制bbed PASSWORD=blockedit mode=edit blocksize=8192 listfile=/home/oracle/file.txt
bbed password=blockedit blocksize=8192 mode=edit filename='/u01/app/oracle/oradata/lhrdb/users01.dbf'