某项目一则Oracle数据坏块修复全过程

一、问题描述

          上周五现场某项目一数据库开发工程师向我反馈他们一个Oracle生产数据库刷新分区表JXH_SER_LOG_DETAILS统计信息出现坏块并提出数据库应急响应技术支持,由于上周五现场网络有问题,服务器远程频繁断开,我先让他们现场对接客户IT处理网络问题,已跟现场IT人员确认已开启了归档模式,如果是硬件坏块几乎只能换硬件了。如果未开归档模式修复会变的十分困难,所幸检测出的是逻辑坏块,掌握一些技巧处理还是相对比较简单的,以此案例分享给大家遇到同样的问题时可以借鉴避免及少走弯路。下面贴上坏块错误问题。是1号文件system表空间出现坏块号3345

 

二、问题重现

通过现场提供的向日葵远程到堡垒机连接到这台Oracle数据库实例检测坏块。

 

三、坏块定位

通过 ORA-01578:ORACLE data block corrupted (file #1 ,block # 3345)定位坏块损坏的数据库对象

SQL> select tablespace_name,segment_type,owner,segment_name from dba_extents

    where file_id=1 and 3345 between block_id and block_id+blocks-1;

 

通过坏块定位找出损坏的数据库对象是SYS用户的system表空间一个名为I_MON_MODS$_OBJ索引损坏。

 

四、坏块修复

  1. 先尝试用RMAN 备份集修复坏块

 

由于该坏块是索引坏块并且是system数据字典坏块无法通过RMAN备份集进行恢复。这个方法跳过。只能使用重建索引进行恢复对象。
 

  1. 重建索引I_MON_MODS$_OBJ
    在线重建索引:
    Alter index sys.I_MON_MODS$_OBJ rebuild online;

 

五、检查坏块是否消除

 

SQL> select tablespace_name,segment_type,owner,segment_name from dba_extents

   where file_id=1 and 3345 between block_id and block_id+blocks-1;

 

这里可以看出坏块已消除。

 

六、回到现场初始问题执行ALANYZE TABLE正常

 

刷新分区表JXH_SER_LOG_DETAILS统计信息

SQL> ANALYZE TABLE JXH.JXH_SER_LOG_DETAILS PARTITION(PART_202012) COMPUTE STATISTICS;

Table analyzed.

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

fashion186

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值