《restore archivelog》

摘要:《restore archivelog》

2009/6/28

本以為restore archivelog 跟 restore spfile及control file是一樣的。

天真的下了 restore archivelog all from 'c:\backupdb\AR_BACKUP',

得到的答案是 'RMAN-20242: specification does not match any archive log in the recovery catalog',

原來 restore archivelog 要指定sequence 或 time,

list backup of archivelog all;

以上指令可以得知備份檔有那些 sequence,

舉例如下:

restore archivelog sequence 10;

參考

http://blog.chinaunix.net/u/7586/showart_1150162.html

--------------------

原文截錄如下:

作者:George.ma  BLOG:http://blog.chinaunix.net/u/12521/

restore archivelog后面可以跟的参数有"all, from, high, like, logseq, low, scn, sequence, time, until"

现在举一列子说明:

1.列出已经备份的archivelog

list backup of archivelog all;

2.预览恢复出程,但不真正恢复,可以在你执行恢复前先看看恢复过程,也可以验证一下你的语法是否写对

restore archivelog all preview;  即在你要执行的restore archivelog命令后加preview

restore archivelog sequence 18 preview;

3.恢复指定时间范围的archivelog

  3.1 显示2008-08-13 10:00:00到2008-08-13 11:00:00之间的archivelog

      list backup of archivelog time between "to_date('2008-08-13 10:00:00','yyyy-mm-dd hh24:mi:ss')" and "to_date('2008-08-13

1:00:00','yyyy-mm-dd hh24:mi:ss')";

  3.2 预览恢复2008-08-13 10:00:00到2008-08-13 11:00:00之间的archivelog

      restore archivelog time between "to_date('2008-08-13 10:00:00','yyyy-mm-dd hh24:mi:ss')" and "to_date('2008-08-13

1::00','yyyy-mm-dd hh24:mi:ss')" preview;

  3.3 真正恢复2008-08-13 10:00:00到2008-08-13 11:00:00之间的archivelog

      restore archivelog time between "to_date('2008-08-13 10:00:00','yyyy-mm-dd hh24:mi:ss')" and "to_date('2008-08-13

11::00','yyyy-mm-dd hh24:mi:ss')"

4.恢复指定的archivelog

restore archivelog sequence 18; 恢复sequence为18的archivelog

5.restore archivelog like恢复模糊查询出来的archivelog,这个只能用于通过catalog的备份,用nocatalog的会报错

restore archivelog like '%18%';

6.恢复指定sequence范围的archivelog

restore archivelog from sequence 18 until sequence 20;

或restore archivelog low sequence 18 high sequence 20;

或restore archivelog low logseq 18 high logseq 20;

7.指定archivelog的恢复目的地,如你想把archivelog恢复到一个临时目录时有用,但这个必须包含在run{}里面才能用

set archivelog destination to 'e:\temp';

以上基本上可以解决你恢复archivelog的需求,我是在10.2.0.4版本中测试通过的,欢迎大家补充,转载请说明出处.

作者:George.ma  BLOG:http://blog.chinaunix.net/u/12521/

---------------------------------------------

以下部分是在本人正式环境中遇到的实际情况,非转载:

备份日志中有以下内容:

通道 t1: 正在指定备份集中的存档日志

输入存档日志线程 =1 序列 =18070 记录 ID=35794 时间戳=671966051

输入存档日志线程 =1 序列 =18071 记录 ID=35796 时间戳=671966351

输入存档日志线程 =1 序列 =18072 记录 ID=35798 时间戳=671966652

输入存档日志线程 =1 序列 =18073 记录 ID=35800 时间戳=671966952

输入存档日志线程 =1 序列 =18074 记录 ID=35802 时间戳=671967249

输入存档日志线程 =1 序列 =18075 记录 ID=35804 时间戳=671967550

输入存档日志线程 =1 序列 =18076 记录 ID=35806 时间戳=671967850

输入存档日志线程 =1 序列 =18077 记录 ID=35808 时间戳=671968151

输入存档日志线程 =1 序列 =18078 记录 ID=35810 时间戳=671968451

 

单独恢复18071 到18076

rman> run

{ allocate channel t1 type 'sbt_tape' parms 'ENV=(tdpo_optfile=/usr/tivoli/tsm/client/oracle/bin64/tdpo.opt)';

  restore archivelog from logseq 18071 until logseq 18076 ;

  release channel t1;

}

附註:

alter tablespace users online

alter tablespace users offline

alter tablespace users offline immediate //強制 offline