暂无图片
暂无图片
1
暂无图片
暂无图片
暂无图片

基于ORACLE 19c bbed的安装与简单测试(一)

DB备战室 2019-11-24
3028

一、“安装”bbed

1.上传库文件并编译

由于从11g开始不提供bbed,故需要从10g的库找下面4个文件(在10g的$ORACLE_HOME/rdbms/lib和$ORACLE_HOME/rdbms/mesg目录下)

    [oracle@oracle19c BBED_10g_x64]$ ls
    bbedus.msb bbedus.msg sbbdpt.o ssbbded.o
    [oracle@oracle19c BBED_10g_x64]$ cp s* /u01/app/oracle/product/19.3.0/db_1/rdbms/lib/
    [oracle@oracle19c BBED_10g_x64]$ cp bbedus.ms* /u01/app/oracle/product/19.3.0/db_1/rdbms/mesg/
    [oracle@oracle19c BBED_10g_x64]$ make -f u01/app/oracle/product/19.3.0/db_1/rdbms/lib/ins_rdbms.mk BBED=$ORACLE_HOME/bin/bbed $ORACLE_HOME/bin/bbed

    2.登录bbed(默认密码:blockedit)

      [oracle@oracle19c BBED_10g_x64]$ bbed
      Password:


      BBED: Release 2.0.0.0.0 - Limited Production on Sun Nov 24 19:45:57 2019


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


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


      ##查看参数:
      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 ]

      二、开始测试一(模拟坏块及坏块修复

      1.选择system表空间的一个索引作为测试对象

        SQL> col SEGMENT_NAME for a10
        SQL> set line 200 pages 1000
        SQL> select SEGMENT_NAME,TABLESPACE_NAME,FILE_ID,BLOCK_ID,EXTENT_ID from dba_extents where segment_name='I_OBJ2';


        SEGMENT_NA TABLESPACE_NAME FILE_ID BLOCK_ID EXTENT_ID
        ---------- ------------------------------ ---------- ---------- ----------
        I_OBJ2 SYSTEM 1 344 0
        I_OBJ2 SYSTEM 1 6528 1
        I_OBJ2 SYSTEM 1 11288 2
        I_OBJ2 SYSTEM 1 11792 3
        I_OBJ2 SYSTEM 1 11976 4
        I_OBJ2 SYSTEM 1 12312 5
        I_OBJ2 SYSTEM 1 12520 6
        I_OBJ2 SYSTEM 1 13224 7
        I_OBJ2 SYSTEM 1 14144 8
        I_OBJ2 SYSTEM 1 15520 9
        I_OBJ2 SYSTEM 1 19008 10
        I_OBJ2 SYSTEM 1 19640 11
        I_OBJ2 SYSTEM 1 20792 12
        I_OBJ2 SYSTEM 1 22720 13
        I_OBJ2 SYSTEM 1 22976 14
        I_OBJ2 SYSTEM 1 23192 15
        I_OBJ2 SYSTEM 1 23424 16
        I_OBJ2 SYSTEM 1 57600 17
        I_OBJ2 SYSTEM 1 62336 18
        I_OBJ2 SYSTEM 1 69504 19
        I_OBJ2 SYSTEM 1 78464 20
        I_OBJ2 SYSTEM 1 92672 21
        I_OBJ2 SYSTEM 1 109824 22


        23 rows selected.


        2.编辑bbed.par及listfile.txt

          ## 注1:bbed.par为bbed的配置文件,可以配置一些参数(作用类似于数据泵的par文件)
          ## 注2:listfile.txt为数据文件信息文件(包含文件号,文件名绝对路径,文件大小),该文件名及路径由bbed.par中listfile参数指定,文件内容使用sql(select file#||' '||name||' '||bytes from v$datafile;)生成
          [oracle@oracle19c tmp]$ cat listfile.txt
          1 u01/app/oracle/oradata/ORCL/system01.dbf 954204160
          [oracle@oracle19c tmp]$ cat bbed.par
          password=blockedit
          blocksize=8192
          listfile=/tmp/listfile.txt
          mode=edit


          ##没有配置lisfile文件将会遇到下面的情况,info显示为空
          [oracle@oracle19c tmp]$ bbed parfile=bbed.par


          BBED: Release 2.0.0.0.0 - Limited Production on Sun Nov 24 20:26:06 2019


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


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


          BBED> info
          File# Name Size(blks)
          ----- ---- ---------- ----------

          3.用bbed编辑修改数据块6528的seq值,模拟数据块损坏

            [oracle@oracle19c tmp]$ bbed parfile=bbed.par


            BBED: Release 2.0.0.0.0 - Limited Production on Sun Nov 24 20:28:32 2019


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


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


            BBED> info
            File# Name Size(blks)
            ----- ---- ----------
            1 u01/app/oracle/oradata/ORCL/system01.dbf 116480


            BBED> set block 6528
            BLOCK# 6528


            BBED> p kcbh
            struct kcbh, 20 bytes @0
            ub1 type_kcbh @0 0x06
            ub1 frmt_kcbh @1 0xa2
            ub2 wrp2_kcbh @2 0x0000
            ub4 rdba_kcbh @4 0x00401980
            ub4 bas_kcbh @8 0x001a64ba
            ub2 wrp_kcbh @12 0x0000
            ub1 seq_kcbh @14 0x01
            ub1 flg_kcbh @15 0x06 (KCBHFDLC, KCBHFCKV)
            ub2 chkval_kcbh @16 0x99af
            ub2 spare3_kcbh @18 0x0000


            BBED> m x ff offset 14 ##m:modify代表修改 x代表16进制,ff代表目标值,offset 14代表目标位置
            File: u01/app/oracle/oradata/ORCL/system01.dbf (1)
            Block: 6528 Offsets: 14 to 525 Dba:0x00401980
            ------------------------------------------------------------------------
            ff06af99 00000200 00002500 0000b964 1a000080 00000200 02000000 00000900
            1700c600 00005738 40011a00 02000080 0080cc17 06000500 1500bb02 0000c751
            41018300 0a000120 0000ba64 1a000000 80090800 00008d00 3e01f60a b8090000
            0000ad33 4000835b 40000600 0000601f 0000ec0f 0a10f60a 28104710 69108b10
            820c0d0d a90cdb0c b610d410 bb0b940b f510360e 340d600d 15113211 560c0a0c
            2f0cdf0b 52117311 9e11c811 f2111612 c90fec0e a30e3a12 ad0dda0d c90e7f0e
            62128612 450b200b a20f720f 440f150f 5a0eaa12 cd12ef12 15133813 050e6413
            840d6a0b 8b13af13 d4130014 29144b14 6e149014 b314d614 f8141b15 46156915
            9015b215 d515f715 1d164516 72169c16 bf16e316 07172c17 51177617 9a17bc17
            df170218 25184818 6c189018 b518d718 fe182119 45196919 8b19ae19 d419f719
            1b1a3e1a 621a861a ab1acf1a f71a1f1b 451b691b 8b1bad1b cf1bf21b 141c361c
            591c7c1c a01cc71c e91c0c1d 2f1d521d 751d991d bc1de01d 021e251e 481e6b1e
            8e1eb21e d41ef71e 1a1f3e1f 6c189018 b518050d e20cd918 fb181e19 41196419
            8819ab19 ce19f219 141a371a 5b1a380f 7f0fc60f 7d1aa01a c31a7303 5b073807
            5b0a370a c40ae61a 071b8c0e 291b4a1b 6b1b8d1b af1bd01b f21b131c 351c561c
            781c9a1c bc1cdd1c ff1c201d 421d631d 861da81d ce1d031e 331e541e 761e971e


            <32 bytes per line>


            BBED> p kcbh ##输出格式为:UnitSize* | Name | Offset|  Value
            struct kcbh, 20 bytes @0
            ub1 type_kcbh @0 0x06
            ub1 frmt_kcbh @1 0xa2
            ub2 wrp2_kcbh @2 0x0000
            ub4 rdba_kcbh @4 0x00401980
            ub4 bas_kcbh @8 0x001a64ba
            ub2 wrp_kcbh @12 0x0000
               ub1 seq_kcbh                             @14       0xff ## 可以看到信息已改变
            ub1 flg_kcbh @15 0x06 (KCBHFDLC, KCBHFCKV)
            ub2 chkval_kcbh @16 0x99af
            ub2 spare3_kcbh @18 0x0000


            ## 进行校验
            BBED> verify
            DBVERIFY - Verification starting
            FILE = u01/app/oracle/oradata/ORCL/system01.dbf
            BLOCK = 6528


            Block 6528 is corrupt
            Corrupt block relative dba: 0x00401980 (file 0, block 6528)
            Fractured block found during verification ##可以看到发现了块
            Data in bad block:
            type: 6 format: 2 rdba: 0x00401980
            last change scn: 0x0000.0000.001a64ba seq: 0xff flg: 0x06
            spare3: 0x0
            consistency value in tail: 0x64ba0601
            check value in block header: 0x99af
            computed block checksum: 0xfe




            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 : 1
            Total Blocks Influx : 2
            Message 531 not found;  product=RDBMS; facility=BBED

            4.模拟坏块存在启动数据库

              SQL> shutdown immediate
              Database closed.
              Database dismounted.
              ORACLE instance shut down.
              SQL> startup
              ORACLE instance started.


              Total System Global Area 2483027624 bytes
              Fixed Size 9137832 bytes
              Variable Size 687865856 bytes
              Database Buffers 1778384896 bytes
              Redo Buffers 7639040 bytes
              Database mounted.
              ORA-00603: ORACLE server session terminated by fatal error
              ORA-01092: ORACLE instance terminated. Disconnection forced
              ORA-00604: error occurred at recursive SQL level 1
              ORA-01578: ORACLE data block corrupted (file # 1, block # 6528)
              ORA-01110: data file 1: '/u01/app/oracle/oradata/ORCL/system01.dbf'
              Process ID: 6187
              Session ID: 1 Serial number: 26749

              5.使用bbed重新修改数据块,模拟坏块修复

                BBED> p kcbh
                struct kcbh, 20 bytes @0
                ub1 type_kcbh @0 0x06
                ub1 frmt_kcbh @1 0xa2
                ub2 wrp2_kcbh @2 0x0000
                ub4 rdba_kcbh @4 0x00401980
                ub4 bas_kcbh @8 0x001a64ba
                ub2 wrp_kcbh @12 0x0000
                ub1 seq_kcbh @14 0xff
                ub1 flg_kcbh @15 0x06 (KCBHFDLC, KCBHFCKV)
                ub2 chkval_kcbh @16 0x99af
                ub2 spare3_kcbh @18 0x0000


                ##oracle block tail的组成:tailchk=scn base(前4) + block type(中2) + scn seq(后2),参照tailchk的值,把seq修改为正确的值即可恢复。
                BBED> p tailchk
                ub4 tailchk                                 @8188     0x64ba0601
                ## 说明此时块的scn正确值为01


                BBED> m x 01 offset 14
                File: /u01/app/oracle/oradata/ORCL/system01.dbf (1)
                Block: 6528 Offsets: 14 to 525 Dba:0x00401980
                ------------------------------------------------------------------------
                0106af99 00000200 00002500 0000b964 1a000080 00000200 02000000 00000900
                1700c600 00005738 40011a00 02000080 0080cc17 06000500 1500bb02 0000c751
                41018300 0a000120 0000ba64 1a000000 80090800 00008d00 3e01f60a b8090000
                0000ad33 4000835b 40000600 0000601f 0000ec0f 0a10f60a 28104710 69108b10
                820c0d0d a90cdb0c b610d410 bb0b940b f510360e 340d600d 15113211 560c0a0c
                2f0cdf0b 52117311 9e11c811 f2111612 c90fec0e a30e3a12 ad0dda0d c90e7f0e
                62128612 450b200b a20f720f 440f150f 5a0eaa12 cd12ef12 15133813 050e6413
                840d6a0b 8b13af13 d4130014 29144b14 6e149014 b314d614 f8141b15 46156915
                9015b215 d515f715 1d164516 72169c16 bf16e316 07172c17 51177617 9a17bc17
                df170218 25184818 6c189018 b518d718 fe182119 45196919 8b19ae19 d419f719
                1b1a3e1a 621a861a ab1acf1a f71a1f1b 451b691b 8b1bad1b cf1bf21b 141c361c
                591c7c1c a01cc71c e91c0c1d 2f1d521d 751d991d bc1de01d 021e251e 481e6b1e
                8e1eb21e d41ef71e 1a1f3e1f 6c189018 b518050d e20cd918 fb181e19 41196419
                8819ab19 ce19f219 141a371a 5b1a380f 7f0fc60f 7d1aa01a c31a7303 5b073807
                5b0a370a c40ae61a 071b8c0e 291b4a1b 6b1b8d1b af1bd01b f21b131c 351c561c
                781c9a1c bc1cdd1c ff1c201d 421d631d 861da81d ce1d031e 331e541e 761e971e


                <32 bytes per line>


                BBED> p kcbh
                struct kcbh, 20 bytes @0
                ub1 type_kcbh @0 0x06
                ub1 frmt_kcbh @1 0xa2
                ub2 wrp2_kcbh @2 0x0000
                ub4 rdba_kcbh @4 0x00401980
                ub4 bas_kcbh @8 0x001a64ba
                ub2 wrp_kcbh @12 0x0000
                   ub1 seq_kcbh                             @14       0x01 ##已修改为目标值
                ub1 flg_kcbh @15 0x06 (KCBHFDLC, KCBHFCKV)
                ub2 chkval_kcbh @16 0x99af
                ub2 spare3_kcbh @18 0x0000


                ##再次校验,可以看到文件已恢复正常
                BBED> verify
                DBVERIFY - Verification starting
                FILE = /u01/app/oracle/oradata/ORCL/system01.dbf
                BLOCK = 6528




                DBVERIFY - Verification complete


                Total Blocks Examined : 1
                Total Blocks Processed (Data) : 0
                Total Blocks Failing (Data) : 0
                Total Blocks Processed (Index): 1
                Total Blocks Failing (Index): 0
                Total Blocks Empty : 0
                Total Blocks Marked Corrupt : 0
                Total Blocks Influx : 0
                Message 531 not found; product=RDBMS; facility=BBED


                ##保存修改
                BBED> sum apply
                Check value for File 1, Block 6528:
                current = 0x99af, required = 0x99af


                7.启动数据库

                  正常启动



                  最后修改时间:2019-11-25 11:52:56
                  文章转载自DB备战室,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

                  评论