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