oracle10 ora 01578,ORACLE坏块(ORA-01578)处理方法

3  and between block_id and block_id+blocks-1;

这里的f指的是file#,b指的是block#

我的显示结果指出是tg_bill03出现了坏块。

2、如果确定下来坏的是索引段,这时你就能轻舒一口气了,只要把这个索相删除然后重建一下就能了,如果出现坏的是表段,则应往下走了。

3、  记录下这个表的建表语句

为我方便,建议使用pl/sql developer来完成,如果你没有能在http://www.allroundautomations.com/plsqldev.html去下载一个,操作步骤是这样的。

a、 以表的owner用pl/sql developer连入oracle

b、 在左面的树状栏中找到这个表tg_bill03,右击该表->view->view sql,记录下sql,以备以下步骤中重建索引。

4、  实际处理了,以我的那个表为例

a、 以tg_bill03的owner连入oracle

b、 使用诊断事件10231

sql> alter system set events ‘10231 trace name context forever,level 10’;

c、创建一个临时表tg_bill_tmp的表中除坏块的数据都检索出来

sql>create table tg_bill03_tmp as select * from tg_bill03;

c、 更名原表,并把tg_bill03_tmp为tg_bill03

sql>alter table tg_bill03 rename to tg_bill03_bak;

sql>alter table tg_bill03_tmp to tg_bill03;

d、在tg_bill03上重新创建索引、约束、授权、trigger等对象

e、 利用表之间的业务关系,把坏块中的数据补足。

四、怎么尽量减少问题及问题的损失呢

分析了产生问题的原因,我认为能采取以下几个措施

1、  在为提高性能为操作系统打开异步i/o时,一定要和oracle及操作系统技术支持联系把操作系统和异步i/o相关的补丁要打全。

2、  制定一个良好的备份恢复策略,最佳有表的exp备份

3、  要及时的检查硬件的状态,及时更换驱动器部件。

结篇:其实坏块涉及的内容非常多的,如果坏块发生的回滚段表空间、数据字典(system表空间)或联机日志,这些处理都是特难的,需要和oracle的supporter联系。不过这些方面的坏的机率非常少非常少的,在以后的文章中我也会做介绍。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值