rman实验(2)。
本文可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息及本声明
http://blog.itpub.net/post/11/2315
OS:windows 2000
DB:ORACLE 9.0.1
ORACLE_BASE:d:oracle
1. 以下示例在丢失目标数据库数据文件、恢复目录、所有控制文件、所有在线重做日志文件和所有参数文件的情况下恢复数据库。灾难恢复最小需要某些数据文件的备份、归档日志和至少一个控制文件的自动备份。
2. 启动rman,连接到目标数据库、恢复目录上,设置控制文件自动备份,做数据库的全备份。
c:>rman target sys/oracle@to911newdb rcvcat rman/rman@catalog
连接到目标数据库: HYB (DBID=3456381404)
连接到恢复目录数据库
Rman>configure controlfile autobackup on;
Rman>backup database plus archivelog;
3. 关闭数据库,删除所有的数据文件、控制文件和日志文件,不连接恢复目录(模拟恢复目录数据库损坏),实际环境中可能要重新配置tnsname和listener。重新连接rman。
C: >rman
恢复管理器: 版本9.0.1.1.1 - Production
(c) Copyright 2001 Oracle Corporation. All rights reserved.
RMAN>set DBID 3456381404
正在执行命令: SET DBID
RMAN>connect target sys/oracle@to911newdb
已连接到目标数据库 (未启动)
RMAN>restore controlfile from autobackup;
启动 restore 于 28-7月 -04
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-00579: the following error occurred at 07/28/2004 14:55:26
RMAN-03002: failure during compilation of command
RMAN-03013: command type: restore
RMAN-03002: failure during compilation of command
RMAN-03013: command type: IRESTORE
RMAN-12010: automatic channel allocation initialization failed
RMAN-06403: could not obtain a fully authorized session
RMAN-04005: error from target database: ORA-01034: ORACLE not available
ORA-27101: shared memory realm does not exist
RMAN>startup force nomount
Oracle 例程已启动
总的系统全局区域为 302805104字节
Fixed Size 282736字节
Variable Size 192937984字节
Database Buffers 109051904字节
Redo Buffers 532480字节
RMAN>restore controlfile from autobackup;
启动 restore 于 28-7月 -04
正在使用目标数据库控制文件替代恢复目录
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: sid=11 devtype=DISK
通道 ORA_DISK_1, 正在查找当天控制文件自动备份:20040728
通道 ORA_DISK_1, 找到控制文件自动备份:c-3456381404-20040728-02
通道 ORA_DISK_1, 控制文件自动备份恢复已完成
正在复制控制文件
输出文件名=D:ORACLEORADATAHYBCONTROL01.CTL
输出文件名=D:ORACLEORADATAHYBCONTROL02.CTL
输出文件名=D:ORACLEORADATAHYBCONTROL03.CTL
完成 restore 于 28-7月 -04
RMAN>alter database mount;
数据库已加载
RMAN>run
2> {
3> set until sequence 5 thread 1;
4> restore database;
5> recover database;
6> }
正在执行命令: SET until clause
正在使用目标数据库控制文件替代恢复目录
启动 restore 于 28-7月 -04
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: sid=10 devtype=DISK
通道 ORA_DISK_1: 正在开始恢复数据文件备份集
通道 ORA_DISK_1: 正在指定从备份集恢复的数据文件
正将数据文件00001恢复到D:ORACLEORADATAHYBSYSTEM01.DBF
正将数据文件00002恢复到D:ORACLEORADATAHYBUNDOTBS01.DBF
正将数据文件00003恢复到D:ORACLEORADATAHYBCWMLITE01.DBF
正将数据文件00004恢复到D:ORACLEORADATAHYBDRSYS01.DBF
正将数据文件00005恢复到D:ORACLEORADATAHYBEXAMPLE01.DBF
正将数据文件00006恢复到D:ORACLEORADATAHYBINDX01.DBF
正将数据文件00007恢复到D:ORACLEORADATAHYBTOOLS01.DBF
正将数据文件00008恢复到D:ORACLEORADATAHYBUSERS01.DBF
正将数据文件00009恢复到D:ORACLEORADATAHYBSIDB.ORA
正将数据文件00010恢复到D:ORACLEORADATAHYBYB.ORA
正将数据文件00011恢复到D:ORACLEORADATAHYBZS.ORA
正将数据文件00012恢复到D:ORACLEORADATAHYBFF.ORA
正将数据文件00013恢复到D:ORACLEORADATAHYBBM.ORA
正将数据文件00014恢复到D:ORACLEORADATAHYBSIDB_INDEX.ORA
正将数据文件00015恢复到D:ORACLEORADATAHYBPHOTO.ORA
正将数据文件00016恢复到D:ORACLEORADATAHYBHIS.ORA
正将数据文件00017恢复到D:ORACLEORADATAHYBSIDB_RBS.ORA
正将数据文件00018恢复到D:ORACLEORADATAHYBGRYSZM1994.ORA
正将数据文件00019恢复到D:ORACLEORADATAHYBGRYSZM1995.ORA
正将数据文件00020恢复到D:ORACLEORADATAHYBGRYSZM1996.ORA
正将数据文件00021恢复到D:ORACLEORADATAHYBGRYSZM1997.ORA
正将数据文件00022恢复到D:ORACLEORADATAHYBGRYSZM1998.ORA
正将数据文件00023恢复到D:ORACLEORADATAHYBGRYSZM1999.ORA
正将数据文件00024恢复到D:ORACLEORADATAHYBGRYSZM2000.ORA
正将数据文件00025恢复到D:ORACLEORADATAHYBGRYSZM2001.ORA
正将数据文件00026恢复到D:ORACLEORADATAHYBGRYSZM2002.ORA
正将数据文件00027恢复到D:ORACLEORADATAHYBGRYSZM2003.ORA
正将数据文件00028恢复到D:ORACLEORADATAHYBGRYSZM2004.ORA
正将数据文件00029恢复到D:ORACLEORADATAHYBGRYSZM2005.ORA
正将数据文件00030恢复到D:ORACLEORADATAHYBGRYSZM2006.ORA
正将数据文件00031恢复到D:ORACLEORADATAHYBGRYSZM2007.ORA
正将数据文件00032恢复到D:ORACLEORADATAHYBGRYSZM2008.ORA
正将数据文件00033恢复到D:ORACLEORADATAHYBGRYSZM_LOCAL_INDEX.ORA
正将数据文件00034恢复到D:ORACLEORADATAHYBGRYSZM_GLOBAL_INDEX.ORA
通道 ORA_DISK_1: 已恢复备份段 1
段 handle=E:RMANHYB_532705611_02FS0SAB_1_1 tag=null params=NULL
通道 ORA_DISK_1: 恢复完成
完成 restore 于 28-7月 -04
启动 recover 于 28-7月 -04
使用通道 ORA_DISK_1
正在开始介质的恢复
存档日志线程 1 序列 2 已作为文件 D:ORACLEORA90RDBMSARC00002.001 存在于磁盘上
存档日志线程 1 序列 3 已作为文件 E:ARCHIVEHYBARC_3_1.ARC 存在于磁盘上
存档日志线程 1 序列 4 已作为文件 E:ARCHIVEHYBARC_4_1.ARC 存在于磁盘上
存档日志文件名 =D:ORACLEORA90RDBMSARC00002.001 线程 =1 序列 =2
存档日志文件名 =E:ARCHIVEHYBARC_3_1.ARC 线程 =1 序列 =3
存档日志文件名 =E:ARCHIVEHYBARC_4_1.ARC 线程 =1 序列 =4
完成介质的恢复
完成 recover 于 28-7月 –04
RMAN>
RMAN>alter database open resetlogs;
数据库已打开
RMAN>
4. 完成数据库恢复。可以用sql*plus连接到数据库上
> @conn system/manager@to911newdb
已连接。
system@FXSB01> column host_name format a30
system@FXSB01> column instance_name format a30
system@FXSB01> select host_name,instance_name from v$instance;
HOST_NAME INSTANCE_NAME
------------------------------ ------------------------------
FXSB01 hyb
5. 注意事项:
ü 执行以下查询取得日志序列:
sql> select sequence# from v$archived_log;
SEQUENCE#
----------
1
2
3
4
5
已选择5行。
得到最大的日志序列5
ü 由于rman版本为9.0.1,restore spfile from autobackup;执行出错。不知道9.2.0的版本是否可以执行?
6. 小结:按照传统的恢复方法,需要手工把数据文件copy到原来的位置,重建控制文件等一系列手工操作,容易出错。如果使用rman,这些都不需要了,只需在rman中执行不多的命令就可以实现数据库恢复。




最新回复
上面的例子:做全备份的时候,数据文件,控制文件,联机重做日志文件不是都要放在恢复目录里吗,恢复的时候,不连接恢复目录,你删除了目标数据库的所有物理文件,仅有备份的控制文件,它是从哪里寻找备份集进行恢复的?如果用控制文件代替恢复目录,那备份集又存储在哪呢?
作者 dinosaur.dai — 22 九月, 2004 13:09
备份信息在控制文件中.
所以在nomount状态下有
RMAN>restore controlfile from autobackup;
这一步的操作.
作者 husthxd — 22 九月, 2004 13:09
小结:按照传统的恢复方法,需要手工把数据文件copy到原来的位置,重建控制文件等一系列手工操作,容易出错。如果使用rman,这些都不需要了,只需在rman中执行不多的命令就可以实现数据库恢复
如果使用rman,这些都不需要了?它可以用restore把全备份的副本修复到原来的位置,我是不明白,备份的副本,也就是畚份集,它放在恢复目录数据库里,恢复目录找不到了,它是从哪里restore这些数据文件的。
作者 dinosaur.dai — 22 九月, 2004 13:09
看来你还是没有认真看:
rman备份信息在控制文件中也有.
作者 husthxd — 22 九月, 2004 13:09
Rman>configure controlfile autobackup on;
Rman>backup database plus archivelog;
这两句是不是一定在系统正常情况下要打,如果我在系统RMAN BACKUP前未做呢? ,是不是这样RMAN就不能恢复了,也不能恢复到另我在机子上,他会根据CONTROLFILE里的资料恢复到原先一样的地方
作者 weiky — 22 九月, 2004 13:09
我看了你在做恢复时RMAN不能连接到CATALOG rcvcat rman/rman@catalog ,那系统怎么知道从哪里恢复
作者 weiky — 22 九月, 2004 13:09
请问大侠,你使用set dbid=...
你是怎么知道DBID的
作者 Steven — 22 九月, 2004 13:09
您在连接时看到的DBID,是数据库还没有瞎掉时能看到,当数据库文件全部丢失了,你再用RMAN进去看时,是不会看到DBID的
还有一个问题就是,SET DBID 123456
这里的DBID 是不是必须跟RMAN备份里的DBID是一致的。
作者 Steven — 22 九月, 2004 13:09
如果用了catalog的话,应该可以通过查询catalog上的视图获取dbid.具体参考oracle文档.
作者 husthxd — 22 九月, 2004 13:09
这个老大文章不严谨。恢复目录和控制文件都坏了,那rman怎么知道你的备份集在何处?注意:备份数据的元数据是存在控制文件或恢复目录中的,除此之外,无地可存。所以老大好像是写的控制文件没丢失时的情况啊。从rman的运行过程就看出来了:正在使用目标数据库控制文件替代恢复目录
作者 chenhai — 22 九月, 2004 13:09
没有恢复目录和控制文件,rman当然不知道了备份集在何处了。所以有这么一句:
RMAN>restore controlfile from autobackup;
作者 husthxd — 22 九月, 2004 13:09
又做了一次实验,如果controlfile损坏的话,需要指定备份集恢复控制文件。
作者 husthxd — 22 九月, 2004 13:09
没有恢复目录和控制文件,rman当然不知道了备份集在何处了。所以有这么一句:
RMAN>restore controlfile from autobackup;
这一步如果没有配置rman参数的话,autobackup controlfile默认是放在dbs或database目录下的.你把备份集放到另一台机上做同样操作,这样操作就不成功了。因为另一台机上的oracle没有相关controlfile的备份
作者 xx — 22 九月, 2004 13:09