love wife love life —Roger的Oracle/MySQL/PostgreSQL数据恢复博客

Phone:18180207355 提供专业Oracle/MySQL/PostgreSQL数据恢复、性能优化、迁移升级、紧急救援等服务

未格式化的坏块导致数据库备份失败

本站文章除注明转载外,均为本站原创: 转载自love wife love life —Roger的Oracle/MySQL/PostgreSQL数据恢复博客

本文链接地址: 未格式化的坏块导致数据库备份失败

今天一位同事咨询说某客户一套核心数据库出现坏块,导致NBU备份失败;他通过rman进行blockrecover 报错,如下:

从上述报错来看,rman提示找不到备份集合。对NBU有一点点经验;通过bplist查看最近几天对备份确实没有。

然后我对数据块进行了dump发现内容完全不对。

因此我怀疑这几个坏块可能是未格式化的坏块。进一步通过查询dba_extents进行了确认:

看来这个数据文件可能很大一部分根本没被使用;至少目前没有被使用。我们可以查看该数据文件的高水位信息来验证这一点:

 

不难看出目前该数据文件的HWM大概在1400M左右;而前面报错的坏块编号1185624*8192/1024/1024 大概是9400M左右;显然这是有问题的。

当然对于这个问题,我们可以其实不做任何处理,等业务表的数据逐渐增加;会自动去格式化处理掉这部分坏块,不过这样会影响备份。也就是说在坏块处理好之前备份可能都无法正常进行,除非指定allow corrption参数。

那么针对这种简单问题其实有3种比较简单的处理方法:

1、通过resize文件来完成

2、通过创建测试表,allocate extent到指定文件,并往表中插入大量数据,格式化坏块后,再drop table

3、通过bbed copy 空块直接覆盖即可(copy 覆盖需要修改rdba地址)。

 

很显然,针对这次的情况,resize文件是最简单的了。我们来看看效果:

非常简单的小问题。跟大家分享一下,就当是流水账吧!

 

Leave a Reply

You must be logged in to post a comment.