详解Oracle数据库rman坏块如何修复

概述

最近在用rman还原数据库的时候提示有坏块,所以分析了一下源数据库并修复坏块。在Oracle的恢复中都要考虑是在归档模式的恢复,还是非归档模式的恢复。使用RMAN的BMR修复数据坏块的前提条件是要求数据库在归档模式下。


1、在操作系统层面验证数据是否有损坏:

dbv file='XXX.dbf'

可以看到数据文件都是正常的,继续往下分析。。


2、在数据库层面验证数据是否有损坏

从rman中进行验证数据库块是否有损坏

$ rman target / nocatalog
RMAN> backup validate database;


3、查询坏块视图

在以下视图中查看是否有记录:

select * from v$database_block_corruption;

好吧,源数据库这边没有坏块,最后确认是因为文件在传输过程中中断导致部分文件损坏了,后来压缩后重新传就可以了,最终结果如下:


4、用rman恢复对应的数据块(这个步骤省略)

如果不用rman备份数据文件的话,那么在恢复数据的时候,就需要将这个数据文件全部拷贝过去,然后进行恢复。如果碰到上百个G的大数据文件,为了几个损坏的块进行恢复需要耗费很久的时间。但是如果使用rman工具,就可以对单个的数据文件块进行恢复,很方便。

$ rman target / nocatalog
RMAN> blockrecover datafile xx block xx;

以上就是在碰到坏块时分析的大致过程,大概分为这4步了,大家也可以用bbed模拟坏块然后做一下相关实验。

觉得有用的朋友多帮忙转发哦!后面会分享更多devops和DBA方面的内容,感兴趣的朋友可以关注下~

举报
评论 0