下载后可任意编辑Oracle 坏块故障总结 最近处理了两次典型的 ora-01578,ora-01115,ora-01110 故障,一次是平湖索引块坏,一次是黄山数据文件坏 、blob 数据块坏。平湖的警告日志文件中有以下信息:ORA-12024: error on auto execute of job 21ORA-01578: ORACLE data block corrupted (file # 10, block # 2558610)ORA-01110: data file 10: 'D:\ORACLE\ORADATA\BS\USERS04.DBF'ORA-12024: error on auto execute of job 1ORA-01578: ORACLE data block corrupted (file # 16, block # 2624066)ORA-01110: data file 16: 'D:\ORACLE\ORADATA\BS\USERS10.DBF'应用软件可以正常使用,间或会报错 ora-01578。排错过程登录数据库检查:select count(*) from ep_table t where ptimetrunc(sysdate)-33 and alarmtype=0 and rownum<10001索引扫描报错了,推断为索引上有坏块!继续查:select owner,file_id,segment_name, segment_type, block_id, blocks from dba_extentswhere file_id=16 and block_id<=2624066 and (block_id + blocks- 1) >= 2624066;OWNER FILE_ID SEGMENT_NAME SEGMENT_TYPE BLOCK_ID BLOCKSBS16VHINOINDEX262406616运气真好重建相关索引后数据库就恢复了。黄山坏块故障就比较复杂了,硬盘坏导致多个数据文件的多个块故障,其中还有 blob 对象。Count(*)一张表报错:1下载后可任意编辑查询某张表系统事件中有报错:磁盘管理中报错:2下载后可任意编辑Dell 的服务器,2 块 72G 硬盘,没有做 raid,8i 数据库没有备份。(上图磁盘 3 为移动硬盘)初步检查到这里我感觉这次坏的严重了,恢复可能比较麻烦。整理一下思路:1、 不要随意重启2、 记录损坏的数据信息3、 导出可用数据4、 更换故障硬盘5、 重做系统及数据库6、 恢复数据7、 重传丢失的数据(我们的系统架构可以这样做)排错过程select * from dba_extents where file_id=8 and 1461842 between block_id and block_id+blocks-11BS SYS_LOB0000003770C00017$$LOBSEGMENTUSERS3457081461842 131072168解释:block_id+blocks-1=1461842+这个区有多少个 block-1查到故障段为 L...