運用incremental backup(增量備份)恢復歸檔GAP的DG

like052629發表於2014-12-29
    經常有DBA因為對DATAGUARD監控不到位,導致歸檔日誌和主庫沒有同步(如本人),更悲劇的是主庫通常都設定了RMAN備份, 
而全庫備份結束後通常會刪除歸檔日誌。遇到這種情況,發現很多DBA都會著手重新從主庫全庫備份恢復到從庫, 
遇到小的資料庫還好,對於動輒上百G或T的庫往往會很悲劇,因為資料複製時間都相當的漫長。 
而事實上對於從庫SCN和主庫差距並不大,也可以理解為歸檔差距並不多的DG,
根本沒必要全庫回覆,這種情況下增量恢復能快速解決問題,但對於資料量較小的資料庫,直接重新配置duplicate更為方便:

    採用incremental recover(增量備份恢復)的方法實現主庫和從庫同步, 
先確定備庫的current scn,以此在主庫上執行incremental backup,將備份傳至備庫,使用recover noredo方式恢復備庫。 
    select to_char(current_scn) from v$database; 
在主庫執行incremental備份 
run 

allocate channel d1 type disk; 
allocate channel d2 type disk; 
allocate channel d3 type disk; 
allocate channel d4 type disk; 
backup as compressed backupset incremental from SCN 16856357 database format '/home/oraclerac/rman_bak/forsryxrdb/standby_%d_%T_%U.bak' 
include current controlfile for standby filesperset=5  tag 'FOR STANDBY'; 
release channel d1; 
release channel d2; 
release channel d3; 
release channel d4; 



將備份集傳輸到備庫的指定目錄中
還原控制檔案,並覆蓋原來控制問及那
    restore standby controlfile to '/home/oracle/app/oradata/sryxrdb/control01.ctl'; 
重啟只mount狀態rman
    catalog start with '/home/oracle/rman_bak/forsryxrdb'; 
重新指定資料檔案的位置
    select 'set newname for datafile ' || df.FILE_ID || ' to ''/home/oracle/app/oradata/oravs' ||
       substr(file_name,INSTR(file_name,'/',1,3),50) || ''';'
  from dba_data_files df order by df.file_id;
rman:  
    run{
set newname for datafile 1 to '/home/oracle/app/oradata/sryxrdb/system.256.866220891';
set newname for datafile 2 to '/home/oracle/app/oradata/sryxrdb/sysaux.257.866220891';
set newname for datafile 3 to '/home/oracle/app/oradata/sryxrdb/undotbs1.258.866220893';
set newname for datafile 4 to '/home/oracle/app/oradata/sryxrdb/users.259.866220893';
set newname for datafile 5 to '/home/oracle/app/oradata/sryxrdb/undotbs2.264.866221147';
set newname for datafile 6 to '/home/oracle/app/oradata/sryxrdb/vs_base.420.866561467';
set newname for datafile 7 to '/home/oracle/app/oradata/sryxrdb/vs_base.421.866561531';
set newname for datafile 8 to '/home/oracle/app/oradata/sryxrdb/tbs_index.422.866561581';
switch datafile all;
}  
    recover database noredo; 
啟動備庫,實施應用即可。


參考:http://yunlongzheng.blog.51cto.com/788996/717249

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28258625/viewspace-1383695/,如需轉載,請註明出處,否則將追究法律責任。

相關文章