天天看點

【BBED】使用bbed 修改data block Block Misplaced

使用bbed 修改資料塊實體校驗出錯的問題。

sql> select * from yangtab;

select * from yangtab

              *

error at line 1:

ora-01578: oracle data block corrupted (<b>file # 4, block # 388)</b>

ora-01110: data file 4: '/opt/oracle/oradata/orcl/users01.dbf'

使用dbv 進行驗證。

[email protected]:/home/oracle&gt;dbv file=/opt/oracle/oradata/orcl/users01.dbf 

dbverify: release 10.2.0.1.0 - production on sun aug 7 20:01:34 2011

copyright (c) 1982, 2005, oracle.  all rights reserved.

dbverify - verification starting : file = /opt/oracle/oradata/orcl/users01.dbf

page 388 is marked corrupt

corrupt block <b>relative dba: 0x01000184</b> (file 4, block 388)

bad header found during dbv: 

data in bad block:

 type: 6 format: 2 <b>rdba: 0x0100018c與本來應該的rdba </b><b>0x01000184不一緻。</b>

 last change scn: 0x0000.000b0c25 seq: 0x2 flg: 0x04

 spare1: 0x0 spare2: 0x0 spare3: 0x0

 consistency value in tail: 0x0c250602

 check value in block header: 0x24df

 computed block checksum: 0x0

#block checking: dba = 16777612, block type = ktb-managed data block

#data header at 0x2b92e120827c

#kdbchk: the amount of space used is not equal to block size

#        used=613 fsc=41 avsp=7451 dtl=8064

dbverify - verification complete

total pages examined         : 640

total pages processed (data) : 45

total pages failing   (data) : 1

total pages processed (index): 63

total pages failing   (index): 0

total pages processed (other): 142

total pages processed (seg)  : 0

total pages failing   (seg)  : 0

total pages empty            : 389

total pages marked corrupt   : 1

total pages influx           : 0

highest block scn            : 747176 (0.747176)

<b>從上面dbv檢查的資訊檢視,資料塊388的錯誤資訊屬于資料塊的實體校驗block misplaced</b>

解決方法是<b>使用bbed 修改kcbh.rdba_kcbh 的值和corrupt block relative dba: 0x01000184 (file 4, block 388)中的rdba一緻。</b>

bbed&gt; set dba 4,388

        dba             0x01000184 (16777604 4,388)

bbed&gt; 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

 <b>  ub4 rdba_kcbh                            @4        0x0100018c</b>

   ub4 bas_kcbh                             @8        0x000b0c25

   ub2 wrp_kcbh                             @12       0x0000

   ub1 seq_kcbh                             @14       0x02

   ub1 flg_kcbh                             @15       0x04 (kcbhfckv)

   ub2 chkval_kcbh                          @16       0x24df

   ub2 spare3_kcbh                          @18       0x0000

bbed&gt; <b>set dba 4,388 offset 4</b>

        offset          4

bbed&gt; <b>dump /v dba 4,388 offset 4 count 64</b>

 file: /opt/oracle/oradata/orcl/users01.dbf (4)

 block: 388     offsets:    4 to   67  dba:0x01000184

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

 <b>8c</b>010001 250c0b00 00000204 df240000 l ....%........$..

 01000000 2ecd0000 240c0b00 00000000 l ........$.......

 03003200 89010001 ffff0000 00000000 l ..2.............

 00000000 00000000 00800000 240c0b00 l ............$...

 &lt;16 bytes per line&gt;

<b>注意0x0100018c 在塊裡的存儲方式是低位優先的:8c010001</b>

bbed&gt; <b>modify /x 84</b>

 block: 388              offsets:    4 to   67           dba:0x01000184

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

 <b>84</b>010001 250c0b00 00000204 df240000 01000000 2ecd0000 240c0b00 00000000 

 03003200 89010001 ffff0000 00000000 00000000 00000000 00800000 240c0b00 

 &lt;32 bytes per line&gt;

<b>重新應用校驗和。</b>

bbed&gt; sum dba 4,388

check value for file 4, block 388:

current = 0x24df, required = 0x24d7

bbed&gt; sum dba 4,388 apply

current = 0x24d7, required = 0x24d7

在bbed中進行檢查,壞塊已經修複。

bbed&gt; verify

dbverify - verification starting

file = /opt/oracle/oradata/orcl/users01.dbf

block = 388

total blocks examined         : 1

total blocks processed (data) : 1

<b>total blocks failing   (data) : 0</b>

total blocks processed (index): 0

total blocks failing   (index): 0

total blocks empty            : 0

total blocks marked corrupt   : 0

total blocks influx           : 0

<b>資料庫中檢查,成功。</b>

     empno ename           job               mgr hiredate                  sal       comm     deptno

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

      7369 smith           clerk            7902 17-dec-80                 800                    20

      7499 allen           salesman         7698 20-feb-81                1600        300         30

      7521 yang            salesman         7698 22-feb-81                1250        500         30

      7566 jones           manager          7839 02-apr-81                2975                    20

      7654 martin          salesman         7698 28-sep-81                1250       1400         30

      7698 blake           manager          7839 01-may-81                2850                    30

      7782 clark           manager          7839 09-jun-81                2450                    10

      7788 scott           analyst          7566 19-apr-87                3000                    20

      7839 king            president             17-nov-81                5000                    10

      7844 turner          salesman         7698 08-sep-81                1500          0         30

      7876 adams           clerk            7788 23-may-87                1100                    20

      7900 james           clerk            7698 03-dec-81                 950                    30

      7902 ford            analyst          7566 03-dec-81                3000                    20

      7934 miller          clerk            7782 23-jan-82                1300                    10

14 rows selected.