使用RMAN從磁帶庫恢復歸檔文件


 
最近用RMAN對部分歸檔日志進行了恢復,在此記錄恢復過程
由於不能透漏數據庫信息,故舉例如下:
ORACLE_SID=hrdb
恢復目標路徑:/NewRmanbak/restore_archive/
需要恢復的LOG SEQUENCE:
恢復所用用戶:oracle:oinstall
 
1、查詢對應的Sequence Number,准備恢復目標目錄,並賦予相關權限
select l.SEQUENCE#, l.* from v$archived_log l
where l.COMPLETION_TIME>=to_date('2016-05-14 09:00:00','yyyy-mm-dd hh24:mi:ss')
--and l.COMPLETION_TIME<=to_date('2016-05-16 09:00:00','yyyy-mm-dd hh24:mi:ss')
and l.DEST_ID=1
and l.SEQUENCE#<130519  
查詢需要恢復歸檔日志的SEQ號

  RMAN> list backup of archivelog  from logseq 130430 until logseq 130519;

$ mkdir /NewRmanbak/restore_archive/
$ chown oracle:oinstall /NewRmanbak/restore_archive/
創建恢復目錄(用於存儲恢復的歸檔日志)

 

2、開始恢復
  
run{
 ALLOCATE CHANNEL dev1 TYPE 'sbt_tape'
  parms  'ENV=(NSR_DATA_VOLUME_POOL=oracle,NSR_SERVER=baksvr,NSR_CLIENT=hrdb)';
  set archivelog destination to '/NewRmanbak/restore_archive/'; 
 restore archivelog from logseq 130430 until logseq 130519;
 release channel dev1;
}
恢復腳本

 

  由此可以得到四個歸檔文件在/NewRmanbak/restore_archive/中
注:上文提及的channel type可以在list列表中查看,另外可以通過v$backup_device動態性能視圖查看
 
另近期發現在Symantec Netbackup軟件中,該庫的ARCH備份一直不正常,檢查日志發現是找不到上次恢復的文件:
RMAN> crosscheck archivelog all;
 
  由於之前恢復完成之后,將這幾個文件移動了位置,所以一直找不到這些文件導致備份失敗(根據目前的理解,在RMAN和當前數據庫中,每一個歸檔文件的存在是一份的,也就是說,restore是將備份集中的file move出來了,而不是copy)
當restore之后,即使文件恢復了,oracle也會認為這個文件是數據庫可用的文件。故在下次備份的時候也查找這幾個restore出來的文件,所以在此清除了過期文件之后,備份恢復正常


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM