java.sql.SQLException: ORA-01578: ORACLE 数据块损坏问题解决办法

错误信息:

java.sql.SQLException: ORA-01578: ORACLE 数据块损坏 (文件号 17, 块号 315703)

ORA-01110: 数据文件 17: 'D:ORACLEPRODUCT10.2.0ORADATAORCLDEMO.DBF'


可能的原因有很多,比如物理磁盘坏块,比如Oracle故障……,反正不好定位具体的问题


简单、粗暴的解决办法:

1、查询有坏块的表

select tablespace_name, segment_type, owner, segment_name 
from dba_extents 
where file_id = 17
and 315703 between block_id and block_id + blocks - 1;


2、清空表中的数据

truncate table tabelName;


3、从数据备份中恢复数据

根据备份方式恢复单表数据,如果是测试环境,此步骤就可省略。。。,重新跑测试数据就可以了


其他说明,删除表重建也可以,目的都是跳过Oracle数据文件的坏块


参考资料:

EXPORA-01578(数据块损坏) 错误解决方法 http://www.itpub.net/thread-1045172-1-1.html


原文地址:https://www.cnblogs.com/wenlong/p/5255679.html