使用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>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> set dba 4,388
dba 0x01000184 (16777604 4,388)
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
<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> <b>set dba 4,388 offset 4</b>
offset 4
bbed> <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 ............$...
<16 bytes per line>
<b>注意0x0100018c 在塊裡的存儲方式是低位優先的:8c010001</b>
bbed> <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
<32 bytes per line>
<b>重新應用校驗和。</b>
bbed> sum dba 4,388
check value for file 4, block 388:
current = 0x24df, required = 0x24d7
bbed> sum dba 4,388 apply
current = 0x24d7, required = 0x24d7
在bbed中進行檢查,壞塊已經修複。
bbed> 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.