博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

使用RMAN从磁带库恢复归档文件

Posted on 2016-05-13 14:54  徐正柱-  阅读(2353)  评论(0编辑  收藏  举报
 
最近用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出来的文件,所以在此清除了过期文件之后,备份恢复正常