Oracle ORA-01578错误的解决方法 ( 二)

教程发布:风哥 教程分类:ITPUX技术网 更新日期:2022-02-12 浏览学习:569

Oracle ORA-01578错误的解决方法 ( 二)

参见索引段坏块错误的解决方法:
http://space.itpub.net/?uid-7199859-action-viewspace-itemid-475

今天下午 发布数据库服务器在运行一个sql时 出现以下错误
ORA-01578: ORACLE data block corrupted (file # 6, block # 172469)
ORA-01110: data file 6: '/oradata/ora9i/tablespace01.dbf'
又是出现坏块
赶紧用system用户登录:
select segment_type,owner||'.'||segment_name
from dba_extents
where 6 = file_id and 172469 between block_id and block_id+blocks -1;
TABLE TEST.TB_TEST
查出结果坏的是表段
我们可以设置内部事件,使exp跳过这些损坏的block
SQL> ALTER SYSTEM SET EVENTS '10231 trace name context forever,level 10';
取消内部事件设置
如果你在初始化参数中设置的,注视之
如果在命令行设置的
alter system set events='10231 trace name context off';
用exp导出后 再删除tb_test表 把没损坏的再导回到数据库中

另外种方法:创建一个临时表tb_cashflow_log_tmp的表中除坏块的数据都检索出来
1.SQL>CREATE TABLE tb_test_tmp as select * from tb_test;
2.更名原表
SQL>alter table tb_test rename to tb_test _bak;
SQL>alter table tb_test _tmp to tb_test;
3、在tb_test上重新创建索引、约束、授权、trigger等对象
4、 利用表之间的业务关系,把坏块中的数据补足。

本文标签:
网站声明:本文由风哥整理发布,转载请保留此段声明,本站所有内容将不对其使用后果做任何承诺,请读者谨慎使用!
【上一篇】
【下一篇】