ITPub博客

首页 > Linux操作系统 > Linux操作系统 > ORA-01578错误的解决方法 ( 二)

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

原创 Linux操作系统 作者:paulyibinyi 时间:2008-06-19 15:24:25 0 删除 编辑

参见索引段坏块错误的解决方法:

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、 利用表之间的业务关系,把坏块中的数据补足。

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/7199859/viewspace-351886/ ,如需转载,请注明出处,否则将追究法律责任。

下一篇: 宝宝11个月大了
请登录后发表评论 登录
全部评论
学习数据库

注册时间:2007-12-11

  • 博文量
    907
  • 访问量
    6894305