Oracle ORA-01578错误的解决方法 ( 二)
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、 利用表之间的业务关系,把坏块中的数据补足。