暂无图片
暂无图片
2
暂无图片
暂无图片
暂无图片

bbed使用

116

一、介绍

BBED是oracle内部工具,BBED(Oracle Block Browerand EDitor Tool),顾名思义就是用来直接查看和修改数据文件数据的工具,可以直接修改数据块的内容,该工具不受oracle支持,是一款内部工具,在特殊恢复中可能会用到,一般情况下还是不用BBED的,所以默认是没有生成BBED的可执行文件,而且从oracle 11G开始就默认不提供BBED的库文件,需要从10G拷贝过来编译。


在oracle 11G以上版本,要编译BBED的执行文件,需要从10G中把库文件拷贝到11g中,需要拷贝的4个文件如下:

ssbbded.o、sbbdpt.o、bbedus.msb、bbedus.msg


注意事项:

① 若使用bbed的过程中,数据库有重启的过程,最好是退出BBED重新进入bbed的环境

② windows下BBED软件和其他系统下BBED不太一样,操作的时候块号比其他系统下多一个,为了更方便的使用bbed,不建议在windows上进行修改


二、安装和配置bbed

2.1 手工安装和配置

安装操作如下:

cp soft/ssbbded.o $ORACLE_HOME/rdbms/lib/ssbbded.o

cp soft/sbbdpt.o $ORACLE_HOME/rdbms/lib/sbbdpt.o

cp soft/bbedus.msb $ORACLE_HOME/rdbms/mesg/bbedus.msb

--cp soft/bbedus.msg $ORACLE_HOME/rdbms/mesg/bbedus.msg


然后执行编译:

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


--配置:

[ora11g@bbed ~]$ cat >> bbed.par <<-EOF 

BLOCKSIZE=8192

LISTFILE=/home/ora11g/bbed.txt

MODE=edit

password=blockedit

SPOOL=Y

EOF


sqlplus -s "/ as sysdba" <<-EOF 

               set head off

           set feedback off

               set termout off

               set echo off

               col name for a100

               set term off

               spool /home/ora11g/bbed.txt

               select file#||' ' ||name||' '||bytes from v\$datafile;

               spool off

               exit

       EOF


2.2 脚本安装和配置

#!/bin/bash

#ls $ORACLE_HOME/rdbms/lib/sbbdpt.o

#ls $ORACLE_HOME/rdbms/lib/ssbbded.o

#ls $ORACLE_HOME/rdbms/mesg/bbedus.msb


#定义bbed参数文件存放位置

homePath=`cd ~;pwd`


install_bbed(){

       if [ ! -f $ORACLE_HOME/bin/bbed ] ; then

       OUTPUTFILE=$ORACLE_HOME/rdbms/lib/sbbdpt.o

       if [ ! -f $OUTPUTFILE ] ; then 

       cat <<-EOF | base64 -d |gzip -dc > $OUTPUTFILE

       H4sICBwFLEMCA3NiYmRwdC5vAKt39XFjYmRkgAFGBjsGBA8BjrMg2A5QkgussjgpKaWgRC+ZQa+4

       pKgkMQmJrsxFoUtSK0pgZEpiSSKMTCouhhJF+RARGA1SawinQGJwqjinILcAqK4YZHROcVpuYiZD

       dmlJbjyQkQc0ITUnEaYBiY3NayDABMQsDB//o4tzAzEzFl3SYHEmDHFtsDgzhrg5WJwFQ9wZLM6K

       Ie4LFmfDEI8Fi7NjiGeDxTkwxKeDxTkxxCuBWBBZPdSLbUAsgCV8enGIAwMeTCclpaaA6PzkzNLk

       JKB4ZpI+hK1XnK9nqGcAcmMBkOsLih0EYGYgDaDHBAuF+tFDWBCNjx5yHAwUggZM9yDHpgCaOMx/

       CjjEDZDEeRjQsyhCPczdATjMScAhXoAkzovFGzD1MHdPQBOXgPIXoInrQPkHcNh7AYf4AxzipAJ0

       fcI40iIsHNcTSEfK0DIEHbyHhTsjQh83kv2w8DGEyqGnR3sm4txvC9XPTKZ+D2gaIVd/KNR+Jhz6

       LQjoT8Hh/3Ii7S/C4X+4frQIU0BTtxhHWipnRo0/Jmg4caDFHwB1tZ+WRwcAAA==

       EOF

       fi


       OUTPUTFILE=$ORACLE_HOME/rdbms/lib/ssbbded.o


       if [ ! -f $OUTPUTFILE ] ; then 

       cat <<-EOF | base64 -d |gzip -dc > $OUTPUTFILE

       H4sICCAFLEMCA3NzYmJkZWQubwCrd/VxY2JkZIABRgY7BgQPAdSZEGwHKMkFVllcnJSUkpqil8yg

       V1xSVJKYhERX5qLQJakVJTAyJbEkEUYmFRdDiaJ8iAiMBqk1hFMgMThVXJxTkJtakZqSWgy0uig1

       JxEmj8TG5hUQAPmGheHjf3RxHiBmxqJLBizOhCGuAxZnxhC3AIuzYIi7gMVZMcT9wOJsGOJxYHF2

       DPEcsDgHhng7WJwTQ7wKiAWR1MNYwKgrSS0uwVAPCgF2BvIBus9FwO7CBA5Qej4W+5GBCjTO0MF9

       KK3AiNDHjWS/BJQ2gsqhh/B/RuLcbwfVz0ymfk9omJOrPwxqPxMO/RwE9Kfi8D87E3H2F+PwP0w/

       uv3o/MlYzAQBfibUeGKC6uVAiz8Ao6DPwqcEAAA=

       EOF

       fi


       OUTPUTFILE=$ORACLE_HOME/rdbms/mesg/bbedus.msb


       if [ ! -f $OUTPUTFILE ] ; then 

       cat <<-EOF | base64 -d |gzip -dc > $OUTPUTFILE

       H4sICGLpIEMCA2JiZWR1cy5tc2IA7VlbbFxHGZ5Zu629idO0wSDxNKKyYhc7JiZAsFJLXu8aL9i7

       K+86F9xVdPacWfvU57I5F683rBAPPAASKlDETUXQB564iDeq8gBKX0q5B9qAVAGP0AJ9aHpPa76Z

       M2cvthMnMm/2kfbbPf/8c/u////nH3vw2AfosZ7+fnIHTwIf2vE5hI+Bz2AvIR6+F48Scn9vYuAY

       uaNRE3f13lEHMnhnE8inZ8va9/sz2Htgg/38OOQqOUm/Rm/Qf/Zc77nRc3fv0d4Dn9g/zyFkbko+

       SThwg1SBT5AV4M/JKvDvxAT20EeAp+gakFML+D1qA39BHeA1mUbfpqZjBqZmmZe1wHQd5lZZbr7I

       DF7VQitgumZZFU1f81lVMy1u3ERbCzRmuRqaV5TifHGW1dBRW+FKwgJX6WwdYrvudp2a5vncY6tc

       q8UzLC4w7nmux4Z85up66HmYxAg9sQjdtW3NMZhlOlz2hXDnDhheKY9JZc1bCW3uBFAKHa1icbFu

       3a01dlbzmelAAcA9R7NYJaxWuWdaFl/BW2o+P/OpYvbTGTY85I8wv8Z1s2pyI5Wdzc5nmB36Aavw

       ttwNA7FZm9uu12BVLNVoOJpt6gw8uLq0huT/CHHB4cOkBvwcuQT8EnkG+GvyK8n/s8BX8EZJP/0N

       cIj+FjhHfwes098DH6V/AP6I/hH4NL0KfF56xEs7eISwXDdBBc33665nTLKssw5dA+2R5AQrWFzz

       OfO4FzosDEzLDBqsbgarLFjlsCLMrgdtfVMNsMYb4l1aKpb56KavsuHxDhnY1GwOcytN0FKz8D5u

       axYsZoNTxVTo2Bq6Q3ApdAMOkjo6+4FwlJgoWFrZ3tMc7DKdmmbDs9gp3GCUpWD7Nfwa6dJxq1Wf

       B13rVaKYz2iJXZ3OZdOlua4+TmhXlKbjMs+tMy2ApUxfjbZj/A+QP4Gxs+TPQJs8B/w8eR74OLkG

       /Cn5C/Aq+SswQUcpxVkxBlygJ4AuHQc+Rj8E/CE9CXxGMv8ijV0MxgHbDEvgdi1o+FzzwEJkMea4

       ATwzdAysdjabS8fylhPni9vDDCEdxJ2FK9dBCuhILebPFREHrsHbwQbHMFecSRY0apzZpi9JRJgE

       dc4dYadRQcV2fRliwmyd9t6uHqDBtzT4QxX8Iro6ptY9Lhq0VhNzK4/AW7eHhFBQjSok2qO4NaxT

       Khwf8o+35RjcYFXPtW/dCOM7huYJA9XCneknh8kEeCuQDwMt5HhKvkE+Avwx+SgVWeBjwH+Q08BN

       8nHge+gkMEW/AqzQrwIvo3qg5JuS+adpex11zwzkj9YaRYhFMVsRceCbl3lka1AcIMbhM2BTqPuc

       rynu3Q4LdBEix9ji9OL8kNotH2qvR3iOzB5iFI1FmRN95rPFkkyiW5PqlkUaLvel20VulEpl0t0h

       68mUFNbEJtQQ0a6jdjmcdMXhoRMTYXc0a56nNcCTwTeiUK9xT7mIYzVani4TOfY4HmlGK9zT+T+A

       +BXx/3Xgo+QK8AdgkZInyXWaIH8jrwL76GvA++nrwAn6BrBE3wSu07eA36JvA59CBZkgL0gveJfG

       e05Pl6YVUX5Y6dg8G2ORBjCEXTWPs5OjbCLuuM5x0rqO0g6dNcetI5s07IprSQPFMSrzgDjnhBfA

       nMghoR6EXkRaOnU2s5idvYDpzuIwrZrttOSJNJKULD2EuJYHrPgV3qxPfDyoHG7E1Yg8kHA4QKgj

       /WCEkhuII1uSwzIbOHYd6MXP5FaNgufq3PehMpwGtyPbNWYxk0h67KYaHWNkhWuM3GqMtoY4/98B

       bw+DswT5LNkEfp/0JRLkCukHPkeSwB56CPg+ehj4IB0AnqZHgHl6L1CjRxPCF84nesmXcYtIkJ9J

       L7hGu+0gDgDW8Wxb4YLmrWEDM1EQ7aSRdapWuLFlDMVHKLxBBWCnyIz6jOFsQI1kmWsc8YSz3dRi

       bUGzdDahHR3jSVYSvtoZokoEncvcc5PqKFfpJz5ckqzIL4Xc0TsUs8hrqOgCNUMknBH+4od2tEKV

       FpOt4k+mvtGO2nB5yC93foqZkiwtlplR0VhTpsgHRqNQe4CVk7cd//3kX2BsirwI5OQl4GfIv4E/

       If8BvkD+C7yPvgxcoK8Am/Q68Dsq24tliBDKTS8g2cVn3fFkLI/WJV+jAFv+4PhYOVqllOZnZ8XX

       smpoBK1qqBlHe5M9qH6V2wPJUlio+1ImcviymLC8dRVRmaSvolzTYdyLOgqOQLbM5JdypWiMi4F7

       0TD9mqU1ZFM2NY1iYpnNZc5j+vxMCZjOzKgF5G/ZupBPZxhaVUXSZJl0tqTaioV8fh5tFyDOsXJx

       Ln8Ob2dEU6uenELb9Pw8Ky9MF5bH18tQEEQ323aOfuIrMml5T/n/HvIq+JwgrwFt8jrw2+QNyfyb

       wH76FvAcvQH8guT8lzS9tHB7C2vG7DaVrcuwDRLr8vhG02iGTbepl0UAIcnq4y2GVBWYjAK8c47u

       qbbNsd1dpovF7CdyrenK7AzS/ooqq6ceOuO7oadHtcJUsqsNiWVPMye7xpajyYMOOp3zoMATacGf

       YmVRAN+WYTBUKV8QNl1aXNwj+XiS5B1wmybvAh8jmz3izCe9CTJAKfC9NAF8P+0Bpmgv8BK9CxjS

       u4HflR7xFC0sZnOlrsXvyXiZ89ML2VxmeTwXVvc4VGGpOHf7I5QLMOwygq+czc3mFzOoA0q79i4X

       lxZ2V4LGdKEwf4GVl3LpvCowdu01l5kviARRqbTvoq388P/5+08fuQdMniZ9wCfIIeCz5DBwkwwA

       R+gRoEXvBX6RHgU+KTl/WWZ+mb+EqRhyFRN5gUlXYIrB6FY3ky9cYFHksygimTCZpEYYXNlZ2IXJ

       DSvrzOQXF5cKJfW1u7HOCH+ZmkzmcNZr8cFcXzXFhVNV9qgzcT2q4WrG5DlwIhlKZZR1wY7KIa5r

       TFwBJpGPKtCtoEgNKyfZsDg3RiBcFcIJIZxgw6uaVR0Tf3sQLXXRckq0nBqOZR5keYSzuJGIe4mq

       43FXT1ZvvRJ1PIkbACoNsRxR06zyDc2Aki1KFmZA0n4TWwsdcaMVf81S4h3+H3KfiHDx/xpSJIPA

       upRfIYy5GMHVAzmajt/tVDQs6pl1aQCnvaXI5pAFbRluKyidmNmWYLOmIZ1i96gp5XdXOvgb7l6e

       zc0DGxzwf/Ds76fvwAT79PkfAqWSXwAiAAA=

       EOF

       fi


       make -f $ORACLE_HOME/rdbms/lib/ins_rdbms.mk BBED=$ORACLE_HOME/bin/bbed $ORACLE_HOME/bin/bbed &> dev/null

       fi

}


config_bbed() {

rm rdba.txt &>/dev/null


read -p "输入路径: " d

read -p "输入dd开始位置: " begin

read -p "输入dd结束位置: " end

if [ -d $d ]

        then

                for i in `ls $d/*`

                do

                        #echo $i

                        #从损坏的块之后dd

                        for (( y=$begin;y<=$end;y=y+1 ))

                        do

                                echo -n -e "filename=$i;rdba=" >>${homePath}/rdba.txt

                                #dd if=$i skip=$y bs=8192 count=1|od -x|head -n 1|awk '{print $5$4}' >>rdba.txt

                                a=`dd if=$i skip=$y bs=8192 count=1|od -x|head -n 1|awk '{print $5$4}'`

                        if [ -n $a ]

                                then

                                        #echo $a >>rdba.txt

                                        echo ${a^^} >>${homePath}/rdba.txt

                                        #echo $i $y已经获取到值,退出

                                        break

                        fi

                        done

                done

fi


#rdba转换为文件号,块号;

#这个思路就是先16 -> 2  -> 10,最终换算成10进制查看。前10个bit代表相对文件号,后22个bit代表块号

rm ${homePath}/rdban.txt &>/dev/null

cat ${homePath}/rdba.txt|while read i

do

        eval $i

        xx=`echo "ibase=16;obase=2;" $rdba|bc`

        x=`echo "ibase=16;obase=2;" $rdba|bc|wc -L`

        y=$[ 32-$x ]

        if [ $y -eq 0 ]

                then

                #echo "$x 有32位!"

                #echo $xx

                b=`echo $xx|cut -b 1-10`

                c=`echo $xx|cut -b 11-32`

                ((file=2#$b))

                ((blk=2#$c))

                echo -n "filename=$filename;rdba=$rdba;" >> ${homePath}/rdban.txt

                echo "rdba1=$xx;file=$file;blk=$blk" >> ${homePath}/rdban.txt

        else

                yy=`tr -cd '0' <  /dev/urandom | head -c $y`

                #a=`echo $yy$xx`

                b=`echo $yy$xx|cut -b 1-10`

                c=`echo $yy$xx|cut -b 11-32`

                ((file=2#$b))

                ((blk=2#$c))

                echo -n "filename=$filename;rdba=$rdba;" >> ${homePath}/rdban.txt

                echo "rdba1=$yy$xx;file=$file;blk=$blk" >> ${homePath}/rdban.txt

                #echo $file $blk


        fi

done

#生成bbed的参数文件

rm ${homePath}/sort.txt &>/dev/null

rm ${homePath}/bbed.txt &>/dev/null

rm ${homePath}/bbed.par &>/dev/null


cat rdban.txt|while read i

do

        eval $i

        echo $file $filename >>${homePath}/sort.txt

done

sort -n -k 1 ${homePath}/sort.txt > ${homePath}/bbed.txt


#删除0开头的文件和包含temp的文件名

#sed -ri '/^0|temp/d' bbed.txt


#生成bbed的控制文件

echo "BLOCKSIZE=8192" >>${homePath}/bbed.par

echo "LISTFILE=${homePath}/bbed.txt" >>${homePath}/bbed.par

echo "MODE=edit" >>${homePath}/bbed.par

echo "password=blockedit" >>${homePath}/bbed.par

echo "SPOOL=Y" >>${homePath}/bbed.par


echo "alias bbed='rlwrap bbed'" >>~/.bash_profile

source ~/.bash_profile

#清除排序和rdba生成的脚本

rm ${homePath}/sort.txt &>/dev/null

rm ${homePath}/rdba*.txt


read -p "bbed parfile=bbed.par"

bbed parfile=bbed.par

}


while true


echo -e "\033[42m---------------------------------\033[0m"

echo -e "#\e[32m 1.安装bbed\e[0m                #"

echo -e "#\e[33m 2.配置bbed\e[0m                #"

echo -e "#\e[33m 路径输入数据文件位置路径,起始输入1,结束随意\e[0m                #"

echo -e "#\e[34m 3.卸载bbed\e[0m                #"

echo -e "#\e[35m 4.退出\e[0m                #"


echo -e "\033[42m---------------------------------\033[0m"


read -p "输入: " oper_name

do

       if [ "$oper_name" == "1" ];then

               which bbed &>/dev/null

               if [ $? -eq 0 ];then

                       echo "WARNING: bbed installed,not install again!!!"

               else

                       echo "begin install bbed..."

                       install_bbed

                       echo "installl bbed succeed..."

               fi

       elif [ "$oper_name" == "2" ];then

               echo "begin config bbed..."

               config_bbed

               echo "end config bbed..."

       elif [ "$oper_name" == "3" ];then

               #deinstall bbed

               cd $ORACLE_HOME/bin && rm bbed -f

               cd $ORACLE_HOME/rdbms/lib && rm sbbdpt.o -f

               cd $ORACLE_HOME/rdbms/lib && rm ssbbded.o -f

               cd $ORACLE_HOME/rdbms/mesg && rm bbedus.msb -f

               #deconfig bbed

               rm ${homePath}/bbed.par  -f

               rm ${homePath}/bbed.txt  -f

               rm ${homePath}/log.bbd -f

               echo "bbed deinstall ok!!!"

       elif [ "$oper_name" == "4" ];then

               exit -1

       else

               exit -1

       fi

done

wait


三、命令使用

[ora11g@bbed ~]$ bbed help=y

PASSWORD - Required parameter

FILENAME - Database file name

BLOCKSIZE - Database block size

LISTFILE - List file name

MODE - [browse/edit]

SPOOL - Spool to logfile [no/yes]

CMDFILE - BBED command file name

LOGFILE - BBED log file name

PARFILE - Parameter file name

BIFILE - BBED before-image file name

REVERT - Rollback changes from BIFILE [no/yes]

SILENT - Hide banner [no/yes]

HELP - Show all valid parameters [no/yes]


一般使用bbed都是将上面的参数写到一个配置文件里面,然后bbed parfile=路径/文件 去调用执行进入bbed工具;

也可以手工方式进行操作:

set filename '/u01/app/oracle/oradata/orcl11g/system01.dbf'

set blocksize 8192

set spool=y


BBED> help all

1) set命令

SET DBA [ dba | file#, block# ]    ---set dba地址或文件号,块号

SET FILENAME 'filename'       ---set 数据文件名

SET FILE file#                ---set 数据文件号

SET BLOCK [+/-]block#         ---set 块号

SET OFFSET [ [+/-]byte offset | symbol | *symbol ]   ---set offset(即偏移量)

SET BLOCKSIZE bytes          ----set block大小

SET LIST[FILE] 'filename'        ----set list文件

SET WIDTH character_count      ----设置显示宽度

SET COUNT bytes_to_display     ----设置显示bytes数目

SET IBASE [ HEX | OCT | DEC ]   ----设置进制模式hex 16进制 oct 8进制  dec 10进制

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 ]


2)map命令

BBED> map v file 1 block 1

 File: u02/app/oracle/oradata/zlhis/system01.dbf (1)

 Block: 1                                     Dba:0x00400001

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

 Data File Header


3) print命令 该命令通常配合map使用

BBED> help print

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


说明:

  x   ----16进制

  d   ----10进制

  u   ----无正负之分的10进制 ---不需关注

  o   ----8进制

  c   ----字符 ---不需关注

示例如下:

BBED&get; p x file 1 block 1


4)dump 命令 

BBED> help dump

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


d v  file 1 block 1 offset 2 count 32


5) find 命令  顾名思义即查找我们需要修改或查找的byte


BBED> help find

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


说明:

  x  ---16 进制

  d  ---10进制

  u  ----无需关注

  o  ----8进制

  c  ---字符   

top 和curr是什么意思?

       top从块开头到块结尾扫描搜索

       curr从当前bbed操作的offset开始扫描

示例:

BBED> find x 414c4558

 File: oracle/backup/system.dbf (1)

 Block: 1                Offsets:   32 to  543           Dba:0x00400001

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

 414c4558 00000000 4f020000 00f00000 00200000 01000300 00000000 00000000 


BBED> find c ALEX

 File: oracle/backup/system.dbf (1)

 Block: 1                Offsets:   32 to  543           Dba:0x00400001

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

 414c4558 00000000 4f020000 00f00000 00200000 01000300 00000000 00000000 



6)copy 命令   该命令通常用于修改或备份


BBED> help copy

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


用法:copy  file 1 block 1 to file 5 block 100

坏块,可以使用,copy过来修改相关信息;


7)revert 命令 (回滚操作,将前面的操作全部回退,也可以回滚某一个块的操作,如果没有记录日志,是恢复不了的,默认建议保留日志)

 

BBED> help revert

REVERT [ DBA | FILE | FILENAME | BLOCK ]


以上面的操作为例,进行回滚:


BBED> REVERT

All changes made in this session will be rolled back. Proceed? (Y/N) y

Reverted file '/oracle/backup/control.ctl', block 1

Warning: contents of previous BIFILE will be lost. Proceed? (Y/N) y

 

8)modify命令  修改命令 这是最重要的一个命令


BBED> help modify

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

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

在处理坏块的时候,这个就是我们必用的命令


BBED> find c TAG

 File: oracle/backup/control.ctl (6)

 Block: 1                Offsets:   64 to  575           Dba:0x01800001

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

 54414732 30313031 32313154 32303237 33310000 00000000 00000000 00000000 

 00000000 5a92c82b 2f2f0b00 00000000 3352f52b 00000000 00000000 00000000 

。。。。。

BBED> modify x 999999  

 File: oracle/backup/control.ctl (6)

 Block: 1                Offsets:   64 to  575           Dba:0x01800001

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

 99999932 30313031 32313154 32303237 33310000 00000000 00000000 00000000 

 00000000 5a92c82b 2f2f0b00 00000000 3352f52b 00000000 00000000 00000000 

把TAG 改成AAA 怎么改?

m c AAA  或者转换程16进制,然后 m x 


9) sum 命令  该命令用于计算checksum值或修改以后进行apply


BBED> help sum

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

--不写apply就不会写到当前的块,只是计算


BBED> sum

Check value for File 6, Block 1:

current = 0x7dad, required = 0xa5be        --当前   oracle要求(也就是计算后的值)


BBED> sum file 6 block 1 apply

Check value for File 6, Block 1:

current = 0xa5be, required = 0xa5be


10)push 命令


这个命令啥意思

BBED> help push

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


示例:

BBED> x /rni *kdxle_off[20] 

rowdata[2769] @3775 

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

flag@3775: 0x00 ()

lock@3776: 0x00

data key:

col 0[3]: 7782 

col 1[6]: 0x100002cb.0x0030 (4,715.48)


BBED> push dba 0x100002cb off *kdbr[48] 

DBA 0x100002cb (268436171)

OFFSET 2609


11)VERIFY 命令   很常用的一个命令 一般用于校验坏块


BBED> help VERIFY

VERIFY [ DBA | FILE | FILENAME | BLOCK ]


示例:

 

BBED> verify dba 0x01800001

DBVERIFY - Verification starting

FILE = /oracle/backup/control.ctl

BLOCK = 1



DBVERIFY - Verification complete


Total Blocks Examined         : 1

Total Blocks Processed (Data) : 0

Total Blocks Failing   (Data) : 0

Total Blocks Processed (Index): 0

Total Blocks Failing   (Index): 0

Total Blocks Empty            : 0

Total Blocks Marked Corrupt   : 0

Total Blocks Influx           : 0

 

12)CORRUPT 命令 (没实际用处,感觉是标记坏块,做实验用)


BBED> help CORRUPT        

CORRUPT [ DBA | FILE | FILENAME | BLOCK ]


示例:

BBED> CORRUPT file 6 block 1           ++++该命令可以用来标记坏块

Block marked media corrupt.


BBED&get; verify file 6 block 1

DBVERIFY - Verification starting

FILE = /oracle/backup/control.ctl

BLOCK = 1


Block Checking: DBA = 25165825, Block Type = Control file block

Found block already marked corrupted


DBVERIFY - Verification complete


那么oracle标记坏块的本质是什么? 就是修改p kcbh 的seq_kcbh offset 14位置为0xff

那么标记坏块之后,如何修复?

m /x 01 offset 14

m /x 01 offset 8188

sum apply

v

--验证:

select * from ;


文章转载自数据库技术加油站,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论