Oracle rman中rman restore spfile和recover的区别

群里 苏州-孤星 问了一个问题:
先用RMAN backup database,然后做一些操作,在用backup archvivelog all delete input 备份归档日志并删除备份过的归档日志。 那么RMAN 在进行recover的时候,怎么应用备份的归档文件。
我的回答:
在进行recover 的时候,会先将备份的归档文件还原到归档目录,然后从这个目录应用归档文件,完成恢复的过程。 我们看2个实验。
一. 实验一
这个实验是我之前做RMAN 同机复制的一个实验。
RMAN 同机复制数据库
1.1& RMAN 备份的脚本:
RMAN&RUN {
allocate channel c1
allocate channel c2
BACKUP FORMAT '/u02/backup/orcl_%U_%T' skip inaccessible filesperset 5& DATABASE TAG orcl_hot_db_
sql 'alter system archive log current';
BACKUP FORMAT '/u02/backup/arch_%U_%T' skip inaccessible filesperset 5 ARCHIVELOG ALL DELETE INPUT;
backup current controlfile tag='bak_ctlfile' format='/u02/backup/ctl_file_%U_%T';
backup spfile tag='spfile' format='/u02/backup/ORCL_spfile_%U_%T';
release channel c2;
release channel c1;
1.2& Recover 还原的日志:
contents of Memory Script:
&& set until scn& 697286;
&& recover
&& clone database
&&& delete archivelog
executing Memory Script
executing command: SET until clause
Starting recover at 18-JUL-10 -- 开始recover 恢复数据
allocated channel: ORA_AUX_DISK_1
channel ORA_AUX_DISK_1: sid=155 devtype=DISK
starting media recovery
channel ORA_AUX_DISK_1: starting archive log restore to default destination
-- 先将归档日志还原到指定的归档目录: log_archive_dest 参数指定
channel ORA_AUX_DISK_1: restoring archive log
archive log thread=1 sequence=41 &
channel ORA_AUX_DISK_1: reading from backup piece /u02/backup/arch_3dlj3bro_1_1_
channel ORA_AUX_DISK_1: restored backup piece 1
piece handle=/u02/backup/arch_3dlj3bro_1_1_ tag=TAG111
channel ORA_AUX_DISK_1: restore complete, elapsed time: 00:00:02
&& &--- 将sequence 为41的日志restore 到 指定的归档日志,然后进行restore。
channel ORA_AUX_DISK_1: starting archive log restore to default destination
channel ORA_AUX_DISK_1: restoring archive log
archive log thread=1 sequence=40
channel ORA_AUX_DISK_1: reading from backup piece /u02/backup/arch_3clj3bro_1_1_
channel ORA_AUX_DISK_1: restored backup piece 1
piece handle=/u02/backup/arch_3clj3bro_1_1_ tag=TAG111
channel ORA_AUX_DISK_1: restore complete, elapsed time: 00:00:01
archive log filename=/u01/archivelog/1_40_.dbf thread=1 sequence=40
&&& --- 将sequence 为40的日志restore 到 指定的归档日志,然后进行restore。
channel clone_default: deleting archive log(s)
archive log filename=/u01/archivelog/1_40_.dbf recid=2 stamp=
archive log filename=/u01/archivelog/1_41_.dbf thread=1 sequence=41
channel clone_default: deleting archive log(s)
archive log filename=/u01/archivelog/1_41_.dbf recid=1 stamp=
media recovery complete, elapsed time: 00:00:04
Finished recover at 18-JUL-10
--- recover 结束后,删除所有的还原的归档日志。
1.3 从上面这段脚本我们看出,RMAN 在duplicate中进行recover 归档文件的过程是:
1.3.1. 从备份集中将归档文件restore 到指定的归档目录。 这个目录由log_archive_dest 参数指定。然后应用这个归档文件。
1.3.2. 从上面的log 可以看出,这个recover 是按归档文件来的,就是一个接一个的处理。先从备份集中restore 一个到归档目录,然后应用它。 做完这个做另一个。 知道把备份集中所有的归档文件全部recover 完毕。
1.3.3. 删除所有还原到归档目录的归档日志。 (由recover database 命令中的delete archivelog参数决定)。
二. 实验二
&&&&&&&& 实验一是我进行RMAN duplicate 时产生的日志。 Duplicate 把RMAN 的相关命令都组合起来,方便我们来操作。我们可以通过日志看到它的执行过程。
现在直接用RMAN 做一个测试,来进一步验证实验一的结果。 我按照 苏州-孤星 的步骤来做,先备份数据库,在备份归档日志。
2.1 先看一个我修改过的2个参数:
CONFIGURE CONTROLFILE AUTOBACKUP ON;
CONFIGURE CHANNEL 1 DEVICE TYPE DISK FORMAT&& 'F:/backup/orcl_%U.bak';
2.2&备份数据库:
启动 backup 于 24-8月 -10
使用通道 ORA_DISK_1
通道 ORA_DISK_1: 正在启动全部数据文件备份集
通道 ORA_DISK_1: 正在指定备份集内的数据文件
输入数据文件: 文件号=00001 名称=D:/APP/ADMINISTRATOR/ORADATA/ORCL/SYSTEM01.DBF
输入数据文件: 文件号=00002 名称=D:/APP/ADMINISTRATOR/ORADATA/ORCL/SYSAUX01.DBF
输入数据文件: 文件号=00003 名称=D:/APP/ADMINISTRATOR/ORADATA/ORCL/UNDOTBS01.DBF
输入数据文件: 文件号=00006 名称=D:/APP/ADMINISTRATOR/ORADATA/ORCL/DBA1.DBF
输入数据文件: 文件号=00005 名称=D:/APP/ADMINISTRATOR/ORADATA/ORCL/DAVE0.DBF
输入数据文件: 文件号=00007 名称=D:/APP/ADMINISTRATOR/ORADATA/ORCL/CATALOG1.DBF
输入数据文件: 文件号=00008 名称=D:/APP/ADMINISTRATOR/ORADATA/ORCL/CATALOG_TS1.DBF
输入数据文件: 文件号=00004 名称=D:/APP/ADMINISTRATOR/ORADATA/ORCL/USERS01.DBF
通道 ORA_DISK_1: 正在启动段 1 于 24-8月 -10
通道 ORA_DISK_1: 已完成段 1 于 24-8月 -10
段句柄=F:/BACKUP/ORCL_36LM695P_1_1.BAK 标记=TAG232 注释=NONE
通道 ORA_DISK_1: 备份集已完成, 经过时间:00:02:25
完成 backup 于 24-8月 -10
启动 Control File and SPFILE Autobackup 于 24-8月 -10
段 handle=D:/APP/ADMINISTRATOR/PRODUCT/11.2.0/DBHOME_1/DATABASE/C-- comment=NONE
完成 Control File and SPFILE Autobackup 于 24-8月 -10
2.3&对数据库做一些修改,这里我们创建一个大表。
SQL& create& table RMAN_TEST as select * from dba_
表已创建。
SQL& select count(*) from RMAN_TEST;
& COUNT(*)
----------
&&&& 72924
&&&&&&&& SQL& alter system
系统已更改。
2.4&备份归档日志
RMAN& backup archive
启动 backup 于 24-8月 -10
当前日志已存档
使用目标数据库控制文件替代恢复目录
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: SID=272 设备类型=DISK
通道 ORA_DISK_1: 正在启动归档日志备份集
通道 ORA_DISK_1: 正在指定备份集内的归档日志
输入归档日志线程=1 序列=79 RECID=244 STAMP=
输入归档日志线程=1 序列=80 RECID=245 STAMP=
输入归档日志线程=1 序列=81 RECID=246 STAMP=
输入归档日志线程=1 序列=82 RECID=247 STAMP=
输入归档日志线程=1 序列=83 RECID=248 STAMP=
输入归档日志线程=1 序列=84 RECID=249 STAMP=
输入归档日志线程=1 序列=85 RECID=250 STAMP=
通道 ORA_DISK_1: 正在启动段 1 于 24-8月 -10
通道 ORA_DISK_1: 已完成段 1 于 24-8月 -10
段句柄=F:/BACKUP/ORCL_38LM69N6_1_1.BAK 标记=TAG150 注释=NONE
通道 ORA_DISK_1: 备份集已完成, 经过时间:00:00:15
通道 ORA_DISK_1: 正在删除归档日志
归档日志文件名=D:/ARCHIVELOG/ORCL_1_79_.ARC RECID=244 STAMP=
归档日志文件名=D:/ARCHIVELOG/ORCL_1_80_.ARC RECID=245 STAMP=
归档日志文件名=D:/ARCHIVELOG/ORCL_1_81_.ARC RECID=246 STAMP=
归档日志文件名=D:/ARCHIVELOG/ORCL_1_82_.ARC RECID=247 STAMP=
归档日志文件名=D:/ARCHIVELOG/ORCL_1_83_.ARC RECID=248 STAMP=
归档日志文件名=D:/ARCHIVELOG/ORCL_1_84_.ARC RECID=249 STAMP=
归档日志文件名=D:/ARCHIVELOG/ORCL_1_85_.ARC RECID=250 STAMP=
完成 backup 于 24-8月 -10
启动 Control File and SPFILE Autobackup 于 24-8月 -10
段 handle=D:/APP/ADMINISTRATOR/PRODUCT/11.2.0/DBHOME_1/DATABASE/C-- comment=NONE
完成 Control File and SPFILE Autobackup 于 24-8月 -10
注意:这里备份了7个归档文件。 已经检查,并确认D:/ARCHIVELOG 没有了任何归档文件。
2.5&Restore database
2.5.1 先将数据库关闭,并启动到mount 状态。
2.5.2 还原数据库&
启动 restore 于 24-8月 -10
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: SID=260 设备类型=DISK
通道 ORA_DISK_1: 正在开始还原数据文件备份集
通道 ORA_DISK_1: 正在指定从备份集还原的数据文件
通道 ORA_DISK_1: 将数据文件 00001 还原到 D:/APP/ADMINISTRATOR/ORADATA/ORCL/SYSTEM01.DBF
通道 ORA_DISK_1: 将数据文件 00002 还原到 D:/APP/ADMINISTRATOR/ORADATA/ORCL/SYSAUX01.DBF
通道 ORA_DISK_1: 将数据文件 00003 还原到 D:/APP/ADMINISTRATOR/ORADATA/ORCL/UNDOTBS01.DBF
通道 ORA_DISK_1: 将数据文件 00004 还原到 D:/APP/ADMINISTRATOR/ORADATA/ORCL/USERS01.DBF
通道 ORA_DISK_1: 将数据文件 00005 还原到 D:/APP/ADMINISTRATOR/ORADATA/ORCL/DAVE0.DBF
通道 ORA_DISK_1: 将数据文件 00006 还原到 D:/APP/ADMINISTRATOR/ORADATA/ORCL/DBA1.DBF
通道 ORA_DISK_1: 将数据文件 00007 还原到 D:/APP/ADMINISTRATOR/ORADATA/ORCL/CATALOG1.DBF
通道 ORA_DISK_1: 将数据文件 00008 还原到 D:/APP/ADMINISTRATOR/ORADATA/ORCL/CATALOG_TS1.DBF
通道 ORA_DISK_1: 正在读取备份片段 F:/BACKUP/ORCL_36LM695P_1_1.BAK
通道 ORA_DISK_1: 段句柄 = F:/BACKUP/ORCL_36LM695P_1_1.BAK 标记 = TAG232
通道 ORA_DISK_1: 已还原备份片段 1
通道 ORA_DISK_1: 还原完成, 用时: 00:09:26
完成 restore 于 24-8月 -10
2.6&应用归档日志
启动 recover 于 24-8月 -10
使用通道 ORA_DISK_1
正在开始介质的恢复
通道 ORA_DISK_1: 正在开始将归档日志还原到默认目标
通道 ORA_DISK_1: 正在还原归档日志
归档日志线程=1 序列=81
通道 ORA_DISK_1: 正在还原归档日志
归档日志线程=1 序列=82
通道 ORA_DISK_1: 正在还原归档日志
归档日志线程=1 序列=83
通道 ORA_DISK_1: 正在还原归档日志
归档日志线程=1 序列=84
通道 ORA_DISK_1: 正在还原归档日志
归档日志线程=1 序列=85
通道 ORA_DISK_1: 正在读取备份片段 F:/BACKUP/ORCL_38LM69N6_1_1.BAK
通道 ORA_DISK_1: 段句柄 = F:/BACKUP/ORCL_38LM69N6_1_1.BAK 标记 = TAG150
通道 ORA_DISK_1: 已还原备份片段 1
通道 ORA_DISK_1: 还原完成, 用时: 00:00:15
归档日志文件名=D:/ARCHIVELOG/ORCL_1_81_.ARC 线程=1 序列=81
归档日志文件名=D:/ARCHIVELOG/ORCL_1_82_.ARC 线程=1 序列=82
归档日志文件名=D:/ARCHIVELOG/ORCL_1_83_.ARC 线程=1 序列=83
介质恢复完成, 用时: 00:00:07
完成 recover 于 24-8月 -10
(1)如果你细心一点,你会发现这里没有恢复sequence 为79 和 80的归档。 因为这2个日志是我们进行RMAN 备份之前的归档文件,RMAN 恢复需要的是RMAN 备份之后的归档文件,所以只恢复并应用了RMAN 备份之后的归档文件。
(2) 确认归档目录 D:/ARCHIVELOG 下生成了从81到85的归档文件。 从这里我们可以确定,recover database 之后生成的归档文件是否删除由参数DELETE ARCHIVELOG 决定, 如果加了该参数,在应用完归档之后就会删除还原到归档目录的归档文件。 如:
RMAN& RECOVER DATABASE DELETE ARCHIVELOG
&&&&&&&& 这一点,也可以参考Oracle 的联机文档:
&&&&&&&&&&&&&&&&&&
(3) Recover 的日志也说明, RMAN 从归档日志备份集中应用归档日志的步骤和实验一是一致。 都是先还原日志,在应用。
&&&&&&&& 通过以上2个实验,我们可以理解,RMAN 从归档文件备份集中应用归档文件,都是先将归档文件从备份集中还原到归档目录,然后从归档目录中应用,至于是否删除,有recover database 的delete archivelog 参数决定,加了该参数,在应用完归档文件后就会删除还原的归档文件。
&&&&&&&& 通过这个测试,也提供了一个学习Oracle 的方法。 多做实验,有什么不明白的,做个实验,自然一切都明了了。
------------------------------------------------------------------------------
Blog: http://blog.csdn.net/tianlesoftware
网上资源: http://tianlesoftware.download.csdn.net
相关视频:http://blog.csdn.net/tianlesoftware/archive//4886500.aspx
DBA1 群:(满); DBA2 群:(满)
DBA3 群:;&&&& 聊天 群:
阅读(...) 评论()2627282930123456891112131416171819202122232425262728293031123456
随笔 - 159
随笔分类(144)
随笔档案(157)
积分与排名
阅读排行榜
评论排行榜oracle备份恢复之recover database的四条语句区别&&
11:27:48|&&分类:
1. recover database using backup controlfile
ITPUB个人空间 \6C+L-K3}+m
&如果丢失当前控制文件,用冷备份的控制文件恢复的时候,用来告诉oracle,不要以controlfile中的scn作为恢复的终点;
2. recover database until cancel
如果丢失current/active redo的时候,手动指定终点。
3. recover database using backup cont
&如果丢失当前controlfile并且current/active redo都丢失,会先去自动应用归档日志,可以实现最大的恢复;
4. recover database until cancel usin
&如果丢失当前controlfile并且current/active redo都丢失,以旧的redo中的scn为恢复终点。因为没有应用归档日志,所有会丢失数据。&
要理解recover database using backup controlfile,先理解 recover database,也就是说,不加using backup controlfile的情况。
在普通的recover database 或者 recover tablespace, recover datafile时, Oracle会以当前controlfile所纪录的SCN为准,利用archive log和 redo log的redo entry, 把相关的datafile 的 block恢复到“当前controlfile所纪录的SCN”
I而某些情况下,Oracle需要把数据恢复到比当前controlfile所纪录的SCN还要靠后的位置(比如说,control file是backup controlfile , 或者 controlfile是根据trace create的。),这时候,就需要用using backup controlfile.&& 恢复就不会受“当前controlfile所记录的SCN”的限制。这时候的限制就来自于你的语句(until time , until scn),或者可用的archive
log(until cancel) ...
alter database open
第 1 行出现错误:
ORA-00313: 无法打开日志组 1 (用于线程 1) 的成员
ORA-00312: 联机日志 1 线程 1:
'C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO01.LOG'
SQL& alter dat
alter database open resetlogs
第 1 行出现错误:
ORA-01139: RESETLOGS 选项仅在不完全数据库恢复后有效
SQL& recover d
完成介质恢复。
SQL& alter dat
数据库已更改。
from:/scott_guo/blog/static/6/
本文已收录于以下专栏:
相关文章推荐
之前在Blog中对RMAN 的备份和恢复做了说明,刚看了下,在恢复这块还有知识点遗漏了。 而且恢复这块很重要,如果DB 真要出了什么问题,就要掌握对应的恢复方法。 所以把DB的恢复这块单独拿出来说明一...
1 recover database using backup controlfile
2 recover database until cancel
3 recover database usi...
1  recover database using backup controlfile
2  recover database until cancel
3  recover database ...
1、数据库置归档模式,设置归档路径
1.1 查询归档状态
SQL& select log_mode from v$
------------
备份恢复实验之十九
      当前控制文件损坏_备份时下线user表空间完全恢复_用控制文件脚本_不需备份(看到脚本就看到了希望)之前实验十五做的是备份时是ONLINE的,现在做一个备份时是下...
***********************************************************************************
实验一: 对于非归档模式的数据...
备份恢复实验之十三
      当前控制文件损坏_完全恢复_用控制文件脚本_不需备份(什么叫控制文件脚本?脚本嘛,就是你看得懂的文件,往下做你就知道了。注意,实验十二需要RESETLOGS,而本...
--======================
-- Oracle 备份恢复概念
--======================
    数据库维护中,备份或恢复是重中之重的问题。尽管很多时...
功能:Oracle数据导入导出imp/exp就相当与oracle数据还原与备份。大多情况都可以用Oracle数据导入导出完成数据的备份和还原(不会造成数据的丢失)。   Oracle有个好处,虽然你的...
他的最新文章
讲师:汪剑
讲师:刘道宽
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)

我要回帖

更多关于 rman restore recover 的文章

 

随机推荐