存储介质损坏ORA-01578数据库无法open案例
一个10g的数据库由于存储介质异常导致数据库块损坏,数据库无法open
Sun Sep 15 19:42:04 2019
Hex dump of (file 1, block 92) in trace file d:\oracle\product\10.2.0\admin\orcl\bdump\orcl_smon_2036.trc
Corrupt block relative dba: 0x0040005c (file 1, block 92)
Bad check value found during buffer read
Data in bad block:
type: 6 format: 2 rdba: 0x0040005c
last change scn: 0x0000.11d6cc54 seq: 0x1 flg: 0x06
spare1: 0x0 spare2: 0x0 spare3: 0x0
consistency value in tail: 0xcc540601
check value in block header: 0xc4e4
computed block checksum: 0xf4b4
Reread of rdba: 0x0040005c (file 1, block 92) found same corrupted data
Sun Sep 15 19:42:04 2019
Errors in file d:\oracle\product\10.2.0\admin\orcl\bdump\orcl_smon_2036.trc:
ORA-00604: error occurred at recursive SQL level 1
ORA-01578: ORACLE data block corrupted (file # 1, block # 92)
ORA-01110: data file 1: 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSTEM01.DBF'
解决方法:
参考:Extracting Data from a Corrupt Table using DBMS_REPAIR or Event 10231 (文档 ID 33405.1)
Setting the Event at Instance level
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
This requires that the event be added to the init$ORACLE_SID.ora file
used to start the instance:
shutdown the database
Edit your init.ora startup configuration file and ADD
a line that reads:
event="10231 trace name context forever, level 10"
Make sure this appears next to any other EVENT= lines in the
init.ora file.