天天看點

增量備份修複實體備庫gap

文檔課題:增量備份修複實體備庫gap,此為無新增資料檔案的測試記錄.
适用場景:
a、rac+dg
b、單執行個體+dg
主備不同步,主庫歸檔日志已删除且無備份.
解決方案:主庫增量備份修複dg備庫中的gap.
具體步驟:
1、停止同步
備庫停止實時應用.
> alter database recover managed standby database cancel;
2、最小scn
備庫查詢最小scn号.
> select to_char(current_scn) from v$database;
說明:
a、備庫出現gap後,後續的歸檔日志不能在備庫端應用,是以備庫的目前scn停止在缺失的第一個歸檔時的起始scn.隻要gap問題未解決,備庫的目前scn一直卡在該值.
b、如果目前scn顯示的是科學計數法格式,說明數值寬度不夠.通過以下指令來設定.
> set numw 15
3、備份
在主庫進行增量備份.
說明:6008152751355為第2部查詢出來的最小scn.
$ rman target /
RMAN> backup as compressed backupset incremental from scn 6008152751355 database format '/home/oracle/fsbak/forstandby_%U' tag 'FORSTANDBY';
RMAN> backup current controlfile for standby format '/home/oracle/fsbak/forstandbyctl.bck';

說明:使用基于scn的增量備份.因為備庫的目前scn卡在6008152751355處,是以主庫的增量備份應該是從scn=6008152751355往後備份,一直備份完所有的資料檔案塊.這樣備庫缺少的gap事務就包含在備份集中,增量恢複到備庫後缺失的gap對應的事務就被恢複到資料檔案中.
注意:主庫端要開啟控制檔案的自動備份,rman show all檢視. (此注意在此次測試中并未執行)
4、傳輸備份集
将備份拷貝至備庫.
$ scp /home/oracle/fsbak/* [email protected]:/home/oracle/fsbak/
5、恢複控制檔案
備庫恢複控制檔案.
RMAN> shutdown immediate;
RMAN> startup nomount;
RMAN> restore standby controlfile from '/home/oracle/fsbak/forstandbyctl.bck';
6、恢複資料檔案
備庫檢視備份集資訊,确認控制檔案中記錄的備份集路徑和備庫上的備份集的實際路徑是否相同.如果不同删除控制檔案中記錄的備份集資訊,重新注冊備份集.
RMAN> alter database mount;
RMAN> crosscheck backup;
RMAN> crosscheck archivelog all;
RMAN> delete noprompt obsolete;
RMAN> delete noprompt expired backup;
RMAN> delete noprompt expired archivelog all;
RMAN> delete backup;
RMAN> list backup;
RMAN> catalog start with '/home/oracle/fsbak/';
RMAN> recover database noredo;
SQL> alter database open;
7、實時同步
備庫開啟實時同步.
SQL> alter database recover managed standby database using current logfile disconnect from session;
$ ps -ef | grep mrp
參考網址:
https://www.jianshu.com/p/733b1a6d4f29
https://www.cnblogs.com/Roobbin/p/14783977.html