概述
最近在用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方面的内容,感兴趣的朋友可以关注下~