zoukankan      html  css  js  c++  java
  • 改动file header (測)

    --改动file header
    -------------------------------------------------------------------------
    cd $ORACLE_H0ME/rdbms/lib
    ./bbed blockedit
    set filename '/u01/app/oracle/product/10.2.0/db_1/dbs/test01.dbf'
    show
    map /v
    p kcvfhckp
    BBED> modify /x 005a


    --拷贝 文件 那块 要好好測试 和认知




    BBED> showv
            FILE#           1
            BLOCK#          1
            OFFSET          0
            DBA             0x00400001 (4194305 1,1)
            FILENAME        /u01/app/oracle/oradata/test/block.dbf
            BIFILE          bifile.bbd
            LISTFILE        list
            BLOCKSIZE       8192
            MODE            Edit
            EDIT            Unrecoverable
            IBASE           Dec
            OBASE           Dec
            WIDTH           80
            COUNT           512
            LOGFILE         log.bbd
            SPOOL           No


    BBED> map /v
     File: /u01/app/oracle/oradata/test/block.dbf (1)
     Block: 1                                     Dba:0x00400001
    ------------------------------------------------------------
     Data File Header


     struct kcvfh, 676 bytes                    @0       
        struct kcvfhbfh, 20 bytes               @0       
        struct kcvfhhdr, 76 bytes               @20      
        ub4 kcvfhrdb                            @96      
        struct kcvfhcrs, 8 bytes                @100     
        ub4 kcvfhcrt                            @108     
        ub4 kcvfhrlc                            @112     
        struct kcvfhrls, 8 bytes                @116     
        ub4 kcvfhbti                            @124     
        struct kcvfhbsc, 8 bytes                @128     
        ub2 kcvfhbth                            @136     

        ub2 kcvfhsta                            @138               //强制打开数据库的时候  有的资料上说这个也要改动

        

       图片来源(oracle 实战攻略) 

       struct kcvfhckp, 36 bytes               @484       改动的三个部分!   9i 140 处

        ub4 kcvfhcpc                            @140     
        ub4 kcvfhrts                            @144     
        ub4 kcvfhccc                            @148     
        struct kcvfhbcp, 36 bytes               @152     
        ub4 kcvfhbhz                            @312     
        struct kcvfhxcd, 16 bytes               @316     
        word kcvfhtsn                           @332     
        ub2 kcvfhtln                            @336     
        text kcvfhtnm[30]                       @338     
        ub4 kcvfhrfn                            @368     
        struct kcvfhrfs, 8 bytes                @372     
        ub4 kcvfhrft                            @380     
        struct kcvfhafs, 8 bytes                @384     
        ub4 kcvfhbbc                            @392     
        ub4 kcvfhncb                            @396     
        ub4 kcvfhmcb                            @400     
        ub4 kcvfhlcb                            @404     
        ub4 kcvfhbcs                            @408     
        ub2 kcvfhofb                            @412     
        ub2 kcvfhnfb                            @414     
        ub4 kcvfhprc                            @416     
        struct kcvfhprs, 8 bytes                @420     
        struct kcvfhprfs, 8 bytes               @428     
        ub4 kcvfhtrt                            @444     


     ub4 tailchk                                @8188    




    BBED> p kcvfhckp
    struct kcvfhckp, 36 bytes                   @484     
       struct kcvcpscn, 8 bytes                 @484     
          ub4 kscnbas                           @484      0x000ddc27   --
          ub2 kscnwrp                           @488      0x0000
       ub4 kcvcptim                             @492      0x2d2fe78a   --
       ub2 kcvcpthr                             @496      0x0001
       union u, 12 bytes                        @500     
          struct kcvcprba, 12 bytes             @500     
             ub4 kcrbaseq                       @500      0x00000011
             ub4 kcrbabno                       @504      0x00000002
             ub2 kcrbabof                       @508      0x0010
       ub1 kcvcpetb[0]                          @512      0x02
       ub1 kcvcpetb[1]                          @513      0x00
       ub1 kcvcpetb[2]                          @514      0x00
       ub1 kcvcpetb[3]                          @515      0x00
       ub1 kcvcpetb[4]                          @516      0x00
       ub1 kcvcpetb[5]                          @517      0x00
       ub1 kcvcpetb[6]                          @518      0x00
       ub1 kcvcpetb[7]                          @519      0x00
    BBED> p kcvfhcpc
    ub4 kcvfhcpc                                @140      0x00000032 --


    BBED> p kcvfhccc
    ub4 kcvfhccc                                @148      0x00000031 --
    --改动以上几个数据就能够了
    BBED> set offset 484 count 16
            OFFSET          484
            COUNT           16


    BBED> dump /v
     File: /u01/app/oracle/oradata/test/block.dbf (1)
     Block: 1       Offsets:  484 to  499  Dba:0x00400001
    -------------------------------------------------------
     27dc0d00 00005a00 8ae72f2d 01000000 l '?...Z..?-....


     <16 bytes per line>'
    --一下是详细的实验步骤
    --shutdown database and reopen to mount
    SQL> shutdown immediate
    Database closed.
    Database dismounted.
    ORACLE instance shut down.
    SQL> startup mount
    ORACLE instance started.


    Total System Global Area  184549376 bytes
    Fixed Size                  1218412 bytes
    Variable Size              92276884 bytes
    Database Buffers           88080384 bytes
    Redo Buffers                2973696 bytes
    Database mounted.
    --update datafile header
    BBED> show
            FILE#           1
            BLOCK#          1
            OFFSET          0
            DBA             0x00400001 (4194305 1,1)
            FILENAME        /u01/app/oracle/oradata/test/block.dbf
            BIFILE          bifile.bbd
            LISTFILE        list
            BLOCKSIZE       8192
            MODE            Edit
            EDIT            Unrecoverable
            IBASE           Dec
            OBASE           Dec
            WIDTH           80
            COUNT           512
            LOGFILE         log.bbd
            SPOOL           No


    BBED> p kcvfhckp
    struct kcvfhckp, 36 bytes                   @484     
       struct kcvcpscn, 8 bytes                 @484     
          ub4 kscnbas                           @484      0x000df330
          ub2 kscnwrp                           @488      0x0000
       ub4 kcvcptim                             @492      0x2d3006c5
       ub2 kcvcpthr                             @496      0x0001
       union u, 12 bytes                        @500     
          struct kcvcprba, 12 bytes             @500     
             ub4 kcrbaseq                       @500      0x00000011
             ub4 kcrbabno                       @504      0x00002da7
             ub2 kcrbabof                       @508      0x0010
       ub1 kcvcpetb[0]                          @512      0x02
       ub1 kcvcpetb[1]                          @513      0x00
       ub1 kcvcpetb[2]                          @514      0x00
       ub1 kcvcpetb[3]                          @515      0x00
       ub1 kcvcpetb[4]                          @516      0x00
       ub1 kcvcpetb[5]                          @517      0x00
       ub1 kcvcpetb[6]                          @518      0x00
       ub1 kcvcpetb[7]                          @519      0x00


    BBED> p kcvfhcpc
    ub4 kcvfhcpc                                @140      0x00000033


    BBED> p kcvfhccc
    ub4 kcvfhccc                                @148      0x00000032


    BBED> set offset 484 count 16
            OFFSET          484
            COUNT           16


    BBED> dump /v
     File: /u01/app/oracle/oradata/test/block.dbf (1)
     Block: 1       Offsets:  484 to  499  Dba:0x00400001
    -------------------------------------------------------
     30f30d00 00000000 c506302d 01000a00 l 0?.....?0-....


     <16 bytes per line>


    BBED> modify /x 20
    Warning: contents of previous BIFILE will be lost. Proceed? (Y/N) y
     File: /u01/app/oracle/oradata/test/block.dbf (1)
     Block: 1                Offsets:  484 to  499           Dba:0x00400001
    ------------------------------------------------------------------------
     20f30d00 00000000 c506302d 01000a00 


     <32 bytes per line>


    BBED> set offset 492
            OFFSET          492


    BBED> dump
     File: /u01/app/oracle/oradata/test/block.dbf (1)
     Block: 1                Offsets:  492 to  507           Dba:0x00400001
    ------------------------------------------------------------------------
     c506302d 01000a00 11000000 a72d0000 


     <32 bytes per line>


    BBED> modify /x c0
     File: /u01/app/oracle/oradata/test/block.dbf (1)
     Block: 1                Offsets:  492 to  507           Dba:0x00400001
    ------------------------------------------------------------------------
     c006302d 01000a00 11000000 a72d0000 


     <32 bytes per line>


    BBED> set offset 140
            OFFSET          140


    BBED> dump
     File: /u01/app/oracle/oradata/test/block.dbf (1)
     Block: 1                Offsets:  140 to  155           Dba:0x00400001
    ------------------------------------------------------------------------
     33000000 ea63292d 32000000 00000000 


     <32 bytes per line>


    BBED> modify /x 31
     File: /u01/app/oracle/oradata/test/block.dbf (1)
     Block: 1                Offsets:  140 to  155           Dba:0x00400001
    ------------------------------------------------------------------------
     31000000 ea63292d 32000000 00000000 


     <32 bytes per line>


    BBED>  set offset 148
            OFFSET          148


    BBED> modify
    BBED-00203: incomplete/malformed command




    BBED> modify /x 30
     File: /u01/app/oracle/oradata/test/block.dbf (1)
     Block: 1                Offsets:  148 to  163           Dba:0x00400001
    ------------------------------------------------------------------------
     30000000 00000000 00000000 00000000 


     <32 bytes per line>


    BBED> sum apply-------------------------------------------------------------------------------------
    Check value for File 1, Block 1:
    current = 0xa51f, required = 0xa51f
    --alter database open
    SQL> alter database open;
    alter database open
    *
    ERROR at line 1:
    ORA-01113: file 5 needs media recovery
    ORA-01110: data file 5: '/u01/app/oracle/oradata/test/block.dbf'
    --modify the file header from system
    BBED> set offset 484 count 16
            OFFSET          484
            COUNT           16


    BBED> dump /v
     File: /u01/app/oracle/oradata/test/block.dbf (1)
     Block: 1       Offsets:  484 to  499  Dba:0x00400001
    -------------------------------------------------------
     30f30d00 00000000 c506302d 01000a00 l 0?.....?0-....


     <16 bytes per line>


    BBED> modify /x 20
    Warning: contents of previous BIFILE will be lost. Proceed? (Y/N) y
     File: /u01/app/oracle/oradata/test/block.dbf (1)
     Block: 1                Offsets:  484 to  499           Dba:0x00400001
    ------------------------------------------------------------------------
     20f30d00 00000000 c506302d 01000a00 


     <32 bytes per line>


    BBED> set offset 492
            OFFSET          492


    BBED> dump
     File: /u01/app/oracle/oradata/test/block.dbf (1)
     Block: 1                Offsets:  492 to  507           Dba:0x00400001
    ------------------------------------------------------------------------
     c506302d 01000a00 11000000 a72d0000 


     <32 bytes per line>


    BBED> modify /x c0
     File: /u01/app/oracle/oradata/test/block.dbf (1)
     Block: 1                Offsets:  492 to  507           Dba:0x00400001
    ------------------------------------------------------------------------
     c006302d 01000a00 11000000 a72d0000 


     <32 bytes per line>


    BBED> set offset 140
            OFFSET          140


    BBED> dump
     File: /u01/app/oracle/oradata/test/block.dbf (1)
     Block: 1                Offsets:  140 to  155           Dba:0x00400001
    ------------------------------------------------------------------------
     33000000 ea63292d 32000000 00000000 


     <32 bytes per line>


    BBED> modify /x 31
     File: /u01/app/oracle/oradata/test/block.dbf (1)
     Block: 1                Offsets:  140 to  155           Dba:0x00400001
    ------------------------------------------------------------------------
     31000000 ea63292d 32000000 00000000 


     <32 bytes per line>


    BBED>  set offset 148
            OFFSET          148


    BBED> modify
    BBED-00203: incomplete/malformed command




    BBED> modify /x 30
     File: /u01/app/oracle/oradata/test/block.dbf (1)
     Block: 1                Offsets:  148 to  163           Dba:0x00400001
    ------------------------------------------------------------------------
     30000000 00000000 00000000 00000000 


     <32 bytes per line>


    BBED> sum apply
    Check value for File 1, Block 1:
    current = 0xa51f, required = 0xa51f


    BBED> set offset 484
            OFFSET          484


    BBED> dump /v count 16
     File: /u01/app/oracle/oradata/test/block.dbf (1)
     Block: 1       Offsets:  484 to  499  Dba:0x00400001
    -------------------------------------------------------
     20f30d00 00000000 c006302d 01000a00 l  ?.....?0-....


     <16 bytes per line>


    BBED> modify /x 30
     File: /u01/app/oracle/oradata/test/block.dbf (1)
     Block: 1                Offsets:  484 to  499           Dba:0x00400001
    ------------------------------------------------------------------------
     30f30d00 00000000 c006302d 01000a00 


     <32 bytes per line>


    BBED> set offset 492 
            OFFSET          492


    BBED> dump /v
     File: /u01/app/oracle/oradata/test/block.dbf (1)
     Block: 1       Offsets:  492 to  507  Dba:0x00400001
    -------------------------------------------------------
     c006302d 01000a00 11000000 a72d0000 l ?0-........?..


     <16 bytes per line>


    BBED> modify /c5
    BBED-00201: invalid switch (/c5)




    BBED> modify /x c5
     File: /u01/app/oracle/oradata/test/block.dbf (1)
     Block: 1                Offsets:  492 to  507           Dba:0x00400001
    ------------------------------------------------------------------------
     c506302d 01000a00 11000000 a72d0000 


     <32 bytes per line>


    BBED> set offset 140
            OFFSET          140


    BBED> dump /v
     File: /u01/app/oracle/oradata/test/block.dbf (1)
     Block: 1       Offsets:  140 to  155  Dba:0x00400001
    -------------------------------------------------------
     31000000 ea63292d 30000000 00000000 l 1...阠)-0.......


     <16 bytes per line>


    BBED> modify /x 33
     File: /u01/app/oracle/oradata/test/block.dbf (1)
     Block: 1                Offsets:  140 to  155           Dba:0x00400001
    ------------------------------------------------------------------------
     33000000 ea63292d 30000000 00000000 


     <32 bytes per line>


    BBED> set offset 148
            OFFSET          148


    BBED> dump /v
     File: /u01/app/oracle/oradata/test/block.dbf (1)
     Block: 1       Offsets:  148 to  163  Dba:0x00400001
    -------------------------------------------------------
     30000000 00000000 00000000 00000000 l 0...............


     <16 bytes per line>


    BBED> modify /x 32
     File: /u01/app/oracle/oradata/test/block.dbf (1)
     Block: 1                Offsets:  148 to  163           Dba:0x00400001
    ------------------------------------------------------------------------
     32000000 00000000 00000000 00000000 


     <32 bytes per line>


    BBED> sum apply
    Check value for File 1, Block 1:
    current = 0xa50a, required = 0xa50a
    --open the database
    SQL> alter database open;


    Database altered.


    SQL> 
    --------------------------------------------------------------------
    --数据有坏块 时候是否影响启动
    --corrupt the block
    BBED> p kcbh
    struct kcbh, 20 bytes                       @0       
       ub1 type_kcbh                            @0        0x06
       ub1 frmt_kcbh                            @1        0xa2
       ub1 spare1_kcbh                          @2        0x00
       ub1 spare2_kcbh                          @3        0x00
       ub4 rdba_kcbh                            @4        0x0140000c
       ub4 bas_kcbh                             @8        0x000de97d
       ub2 wrp_kcbh                             @12       0x0000
       ub1 seq_kcbh                             @14       0x02
       ub1 flg_kcbh                             @15       0x04 (KCBHFCKV)
       ub2 chkval_kcbh                          @16       0x1c9c
       ub2 spare3_kcbh                          @18       0x0000


    BBED> corrupt
    Block marked media corrupt.


    BBED> v
    DBVERIFY - Verification starting
    FILE = /u01/app/oracle/oradata/test/block.dbf
    BLOCK = 12


    Block Checking: DBA = 4194316, Block Type = KTB-managed data block
    Found block already marked corrupted


    DBVERIFY - Verification complete


    Total Blocks Examined         : 1
    Total Blocks Processed (Data) : 1
    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


    BBED> p kcbh
    struct kcbh, 20 bytes                       @0       
       ub1 type_kcbh                            @0        0x06
       ub1 frmt_kcbh                            @1        0xa2
       ub1 spare1_kcbh                          @2        0x00
       ub1 spare2_kcbh                          @3        0x00
       ub4 rdba_kcbh                            @4        0x0040000c
       ub4 bas_kcbh                             @8        0x00000000
       ub2 wrp_kcbh                             @12       0x0000
       ub1 seq_kcbh                             @14       0xff  --原来是02
       ub1 flg_kcbh                             @15       0x04 (KCBHFCKV)
       ub2 chkval_kcbh                          @16       0x1d91
       ub2 spare3_kcbh                          @18       0x0000


    BBED> sum apply
    Check value for File 1, Block 12:
    current = 0x1d91, required = 0x1d91
    --reopen the database
    SQL> alter database open;


    Database altered.


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


    Total System Global Area  184549376 bytes
    Fixed Size                  1218412 bytes
    Variable Size              92276884 bytes
    Database Buffers           88080384 bytes
    Redo Buffers                2973696 bytes
    Database mounted.
    Database opened.
    SQL> 
    --一般坏块不影响数据库的启动
    --改动回来 用corropt改动不会来 奶奶的 还是简单改改ff吧  revert 能够的 注意呀 奶奶的
    --跟踪文件中的错误
    Bad header found during buffer read
    Data in bad block:
     type: 6 format: 2 rdba: 0x0040000c
     last change scn: 0x0000.00000000 seq: 0x2 flg: 0x04
     spare1: 0x0 spare2: 0x0 spare3: 0x0
     consistency value in tail: 0x00000602
     check value in block header: 0x1d91
     computed block checksum: 0x0
    Reread of rdba: 0x0140000c (file 5, block 12) found same corrupted data
    -----------------------------------------------------------------------
  • 相关阅读:
    无密码登录Linux
    php生成压缩包
    验证数字的正则表达式集
    初识MEF
    实现Linq.Distinct方法
    《Windows Internal》(2)
    《Windows Internals》(1)
    使用MEF宿主在一个应用程序上
    mysql错误记录集合
    python基本知识之数据类型
  • 原文地址:https://www.cnblogs.com/mengfanrong/p/3922269.html
Copyright © 2011-2022 走看看