ORA-01578: ORACLE 数据块损坏 (文件号 4, 块号 1322) ORA-01110: 数据文件 损坏

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ORA-01578: ORACLE 数据块损坏 (文件号 4, 块号 1322) ORA-01110: 数据文件 损坏相关的知识,希望对你有一定的参考价值。

Oracle DBA神器:PRM-DUL灾难恢复工具可以直接从这种受损的Oracle数据库中将数据拯救出来。
当你的数据库因为ORA-00600/ORA-07445或其他ORA-报错,或丢失关键的system表空间数据文件,或ASM diskgroup损坏时均可以考虑采用PRM-DUL来做恢复。PRM-DUL采用独创的DataBridge恢复技术,直接从数据文件中抽取数据后可以像DBLINK那样直接插入到新建数据库中,而无需数据落地成为DMP文件占用空间。
参考技术A 取消跳过坏块
BEGINDBMS_REPAIR.SKIP_CORRUPT_BLOCKS (SCHEMA_NAME => 'CHF',OBJECT_NAME => 'T_XIFENFEI',OBJECT_TYPE => dbms_repair.table_object,FLAGS => dbms_repair.NOSKIP_FLAG);END;/

oracle ora-01578 ORACLE 数据块损坏 (文件号 4, 块号 840339)

ORA-01578是 数据块物理坏块/损坏的一种,不同于逻辑损坏/坏块,一般 会伴随ORA-1110出现,一旦ORACLE读取到存在损坏的块就会报出Caused by: java.sql.SQLException: ORA-01578: ORACLE 数据块损坏 (文件号 4, 块号 840339)
ORA-01110: 数据文件 4: ‘E:\APP\ADMINISTRATOR\ORADATA\ORCL\USERS01.DBF‘

解决方法如下:
1、使用DBV检查数据文件,在cmd目录下直接输入dbv file=‘E:\APP\ADMINISTRATOR\ORADATA\ORCL\USERS01.DBF‘ blocksize=8192;然后等待检测结果
2、检查损坏相关的表
SELECT tablespace_name, segment_type, owner, segment_name FROM dba_extents  WHERE file_id = 4 and 840339 between block_id AND block_id + blocks - 1;
查到相关的表名
3、内部事件,设置在全表扫描时跳过损坏的数据块:ALTER SYSTEM SET EVENTS=‘10231 trace name context forever,level 10‘;
4、导出上边相关的表没有损坏的数据exp test/test file=t.dmp tables=t
5、删除损坏相关的表 drop table t;
再将数据做导入imp test/test file=t.dmp tables=t


以上是关于ORA-01578: ORACLE 数据块损坏 (文件号 4, 块号 1322) ORA-01110: 数据文件 损坏的主要内容,如果未能解决你的问题,请参考以下文章

ORA-01578: ORACLE 数据块损坏 (文件号 4, 块号 1322) ORA-01110: 数据文件 损坏

ORA-01578: ORACLE 数据块损坏 (文件号 13, 块号 2415081) ORA-01110: 数据文件XXXXXX

12 oracle 数据库坏块--物理坏块-ORA-01578/ORA-01110

oracle坏块处理记录

oracle数据库查询遇到ora-1578错误是怎么回事? ora-01578 "ORACLE data block corrupted

怎么修复数据库 修复数据库坏块方法