Oracle启动时提示ORA-01578错误解决(一)

2014-11-24 17:22:10 · 作者: · 浏览: 0

1,数据库版本


SQL> select * from v$version;



BANNER


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


Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production


PL/SQL Release 11.2.0.3.0 - Production


CORE 11.2.0.3.0 Production


TNS for Linux: Version 11.2.0.3.0 - Production


NLSRTL Version 11.2.0.3.0 - Production



[oracle@www.htz.pw ~]$sqlplus / as sysdba



SQL*Plus: Release 11.2.0.3.0 Production on Sun May 25 04:36:03 2014



Copyright (c) 1982, 2011, Oracle. All rights reserved.



Connected to an idle instance.



SQL> startup


ORACLE instance started.



Total System Global Area 237998080 bytes


Fixed Size 2227216 bytes


Variable Size 146801648 bytes


Database Buffers 83886080 bytes


Redo Buffers 5083136 bytes


Database mounted.


ORA-01092: ORACLE instance terminated. Disconnection forced


ORA-00604: error occurred at recursive SQL level 1


ORA-00607: Internal error occurred while making a change to a data block


ORA-00600: internal error code, arguments: [kdBlkCheckError], [1], [225],


[6108], [], [], [], [], [], [], [], []


Process ID: 12178


Session ID: 1 Serial number: 5


2,启动报错


[oracle@www.htz.pw ~]$sqlplus / as sysdba


SQL*Plus: Release 11.2.0.3.0 Production on Sun May 25 04:20:44 2014



Copyright (c) 1982, 2011, Oracle. All rights reserved.



Connected to an idle instance.



SQL> startup


ORACLE instance started.



Total System Global Area 237998080 bytes


Fixed Size 2227216 bytes


Variable Size 146801648 bytes


Database Buffers 83886080 bytes


Redo Buffers 5083136 bytes


Database mounted.


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 # 225)


ORA-01110: data file 1: '/oracle/app/oracle/oradata/orcl1123/system01.dbf'


Process ID: 1617


Session ID: 1 Serial number: 5


此块就是存储undo$基表的块,在数据库启动的时候,做恢复的时候,是需要去读undo块的,所以导致报错


3,bbed修复坏块


BBED> verify


DBVERIFY - Verification starting


FILE = /oracle/app/oracle/oradata/orcl1123/system01.dbf


BLOCK = 225



Block Checking: DBA = 4194529, 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


Message 531 not found; product=RDBMS; facility=BBED


这里发现块被标记为坏块,其实这里知道就是把seq更改为FF了,下面我们修改回来就可以了


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 0x004000e1


ub4 bas_kcbh @8 0x0021beaa


ub2 wrp_kcbh @12 0x0000


ub1 seq_kcbh @14 0xff


ub1 flg_kcbh @15 0x04 (KCBHFCKV)


ub2 chkval_kcbh @16 0x4cba


ub2 spare3_kcbh @18 0x0000



BBED> set mode edit


MODE Edit



BBED> set count 16


COUNT 16



BBED> modify /x 00 offset 14


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


File: /oracle/app/oracle/oradata/orcl1123/system01.dbf (0)


Block: 225 Offsets: 14 to 29 Dba:0x00000000


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