ITPub博客

首页 > Linux操作系统 > Linux操作系统 > rman不使用恢复目录恢复数据库示例及问题

rman不使用恢复目录恢复数据库示例及问题

原创 Linux操作系统 作者:husthxd 时间:2004-09-23 00:00:00 0 删除 编辑

rman不使用恢复目录恢复数据库示例


本文可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息及本声明

http://blog.itpub.net/post/11/2363

1. 用rman不使用恢复目录备份数据库

恢复管理器: 版本9.0.1.1.1 - Production

(c) Copyright 2001 Oracle Corporation. All rights reserved.

连接到目标数据库: SIMIS (DBID=1304821840)
正在使用目标数据库控制文件替代恢复目录

RMAN>

RMAN>backup database plus archivelog delete all input;


启动 backup 于 23-9月 -04
当前日志已存档
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: sid=11 devtype=DISK
通道 ORA_DISK_1: 正在启动存档日志备份集
通道 ORA_DISK_1: 正在指定备份集中的存档日志
输入存档日志线程 =1 序列 =849 记录 ID=3 时间戳=537615953
通道 ORA_DISK_1: 正在启动段 1 于 23-9月 -04
通道 ORA_DISK_1: 已完成段 1 于 23-9月 -04
段 handle=E:RMANSIMIS_03G0MNII_1_1.BAK comment=NONE
通道 ORA_DISK_1: 备份集已完成, 经过时间:00:00:02
通道 ORA_DISK_1: 正在删除存档日志
存档日志文件名 =F:ARCHIVESIMISARC_849_1.ARC 记录 ID=3 时间戳 =537615953
完成 backup 于 23-9月 -04

启动 backup 于 23-9月 -04
使用通道 ORA_DISK_1
通道 ORA_DISK_1: 正在启动 full 数据文件备份集
通道 ORA_DISK_1: 正在指定备份集中的数据文件
输入数据文件 fno=00002 name=D:ORACLEORADATASIMISUNDOTBS01.DBF
输入数据文件 fno=00032 name=F:ORACLEORADATASIMISGRYSZM_LOCAL_INDEX.ORA
输入数据文件 fno=00009 name=D:ORACLEORA90DATABASESIDB.ORA
输入数据文件 fno=00033 name=F:ORACLEORADATASIMISGRYSZM_GLOBAL_INDEX.ORA
输入数据文件 fno=00014 name=D:ORACLEORA90DATABASESIDB_INDEX.ORA
输入数据文件 fno=00001 name=D:ORACLEORADATASIMISSYSTEM01.DBF
输入数据文件 fno=00022 name=F:ORACLEORADATASIMISGRYSZM1999.ORA
输入数据文件 fno=00021 name=F:ORACLEORADATASIMISGRYSZM1998.ORA
输入数据文件 fno=00018 name=F:ORACLEORADATASIMISGRYSZM1995.ORA
输入数据文件 fno=00020 name=F:ORACLEORADATASIMISGRYSZM1997.ORA
输入数据文件 fno=00019 name=F:ORACLEORADATASIMISGRYSZM1996.ORA
输入数据文件 fno=00017 name=F:ORACLEORADATASIMISGRYSZM1994.ORA
输入数据文件 fno=00005 name=D:ORACLEORADATASIMISEXAMPLE01.DBF
输入数据文件 fno=00011 name=D:ORACLEORA90DATABASEZS.ORA
输入数据文件 fno=00015 name=D:ORACLEORA90DATABASEPHOTO.ORA
输入数据文件 fno=00023 name=F:ORACLEORADATASIMISGRYSZM2000.ORA
输入数据文件 fno=00024 name=F:ORACLEORADATASIMISGRYSZM2001.ORA
输入数据文件 fno=00025 name=F:ORACLEORADATASIMISGRYSZM2002.ORA
输入数据文件 fno=00026 name=F:ORACLEORADATASIMISGRYSZM2003.ORA
输入数据文件 fno=00027 name=F:ORACLEORADATASIMISGRYSZM2004.ORA
输入数据文件 fno=00028 name=F:ORACLEORADATASIMISGRYSZM2005.ORA
输入数据文件 fno=00029 name=F:ORACLEORADATASIMISGRYSZM2006.ORA
输入数据文件 fno=00030 name=F:ORACLEORADATASIMISGRYSZM2007.ORA
输入数据文件 fno=00031 name=F:ORACLEORADATASIMISGRYSZM2008.ORA
输入数据文件 fno=00012 name=D:ORACLEORA90DATABASEFF.ORA
输入数据文件 fno=00010 name=D:ORACLEORA90DATABASEYB.ORA
输入数据文件 fno=00016 name=D:ORACLEORA90DATABASEHIS.ORA
输入数据文件 fno=00006 name=D:ORACLEORADATASIMISINDX01.DBF
输入数据文件 fno=00008 name=D:ORACLEORADATASIMISUSERS01.DBF
输入数据文件 fno=00013 name=D:ORACLEORA90DATABASEBM.ORA
输入数据文件 fno=00003 name=D:ORACLEORADATASIMISCWMLITE01.DBF
输入数据文件 fno=00004 name=D:ORACLEORADATASIMISDRSYS01.DBF
输入数据文件 fno=00007 name=D:ORACLEORADATASIMISTOOLS01.DBF
通道 ORA_DISK_1: 正在启动段 1 于 23-9月 -04
通道 ORA_DISK_1: 已完成段 1 于 23-9月 -04
段 handle=E:RMANSIMIS_04G0MNIM_1_1.BAK comment=NONE
通道 ORA_DISK_1: 备份集已完成, 经过时间:00:19:36
完成 backup 于 23-9月 -04

启动 backup 于 23-9月 -04
当前日志已存档
使用通道 ORA_DISK_1
通道 ORA_DISK_1: 正在启动存档日志备份集
通道 ORA_DISK_1: 正在指定备份集中的存档日志
输入存档日志线程 =1 序列 =850 记录 ID=4 时间戳=537617135
通道 ORA_DISK_1: 正在启动段 1 于 23-9月 -04
通道 ORA_DISK_1: 已完成段 1 于 23-9月 -04
段 handle=E:RMANSIMIS_05G0MONF_1_1.BAK comment=NONE
通道 ORA_DISK_1: 备份集已完成, 经过时间:00:00:02
通道 ORA_DISK_1: 正在删除存档日志
存档日志文件名 =F:ARCHIVESIMISARC_850_1.ARC 记录 ID=4 时间戳 =537617135
完成 backup 于 23-9月 -04

启动 Control File Autobackup 于 23-9月 -04
段 handle=D:ORACLEORA90DATABASEC-1304821840-20040923-00 comment=NONE
完成 Control File Autobackup 于 23-9月 –04


2. 创建测试数据

10:06:35 SQL> create table test (c1 number) tablespace photo;

表已创建。

已用时间: 00: 00: 00.06
10:06:37 SQL> insert into test values(1);

已创建 1 行。

已用时间: 00: 00: 00.00
10:06:49 SQL> commit;

提交完成。

已用时间: 00: 00: 00.00
10:06:51 SQL> alter system switch logfile;

系统已更改。

已用时间: 00: 00: 00.02
10:06:57 SQL> /

系统已更改。

已用时间: 00: 00: 04.05
10:07:02 SQL> /

系统已更改。

已用时间: 00: 00: 00.03
10:07:02 SQL>
10:08:27 SQL>
10:08:27 SQL> drop tablespace photo including contents and datafiles;

表空间已丢弃。

已用时间: 00: 00: 02.02
10:08:48 SQL>
10:08:51 SQL>

3. 执行不完全恢复
在该例中,如果不从控制文件自动备份中恢复控制文件执行恢复脚本的话,不会恢复photo表空间:

连接到目标数据库: SIMIS (DBID=1304821840)
正在使用目标数据库控制文件替代恢复目录

RMAN>RUN
2> {
3> SET UNTIL TIME "to_date('20040923 10:07:00','yyyymmdd hh24:mi:ss')";
4> RESTORE DATABASE;
5> RECOVER DATABASE;
6> }

正在执行命令: SET until clause

启动 restore 于 23-9月 -04

分配的通道: ORA_DISK_1
通道 ORA_DISK_1: sid=11 devtype=DISK
通道 ORA_DISK_1: 正在开始恢复数据文件备份集
通道 ORA_DISK_1: 正在指定从备份集恢复的数据文件
正将数据文件00001恢复到D:ORACLEORADATASIMISSYSTEM01.DBF
正将数据文件00002恢复到D:ORACLEORADATASIMISUNDOTBS01.DBF
正将数据文件00003恢复到D:ORACLEORADATASIMISCWMLITE01.DBF
正将数据文件00004恢复到D:ORACLEORADATASIMISDRSYS01.DBF
正将数据文件00005恢复到D:ORACLEORADATASIMISEXAMPLE01.DBF
正将数据文件00006恢复到D:ORACLEORADATASIMISINDX01.DBF
正将数据文件00007恢复到D:ORACLEORADATASIMISTOOLS01.DBF
正将数据文件00008恢复到D:ORACLEORADATASIMISUSERS01.DBF
正将数据文件00009恢复到D:ORACLEORA90DATABASESIDB.ORA
正将数据文件00010恢复到D:ORACLEORA90DATABASEYB.ORA
正将数据文件00011恢复到D:ORACLEORA90DATABASEZS.ORA
正将数据文件00012恢复到D:ORACLEORA90DATABASEFF.ORA
正将数据文件00013恢复到D:ORACLEORA90DATABASEBM.ORA
正将数据文件00014恢复到D:ORACLEORA90DATABASESIDB_INDEX.ORA
正将数据文件00016恢复到D:ORACLEORA90DATABASEHIS.ORA
正将数据文件00017恢复到F:ORACLEORADATASIMISGRYSZM1994.ORA
正将数据文件00018恢复到F:ORACLEORADATASIMISGRYSZM1995.ORA
正将数据文件00019恢复到F:ORACLEORADATASIMISGRYSZM1996.ORA
正将数据文件00020恢复到F:ORACLEORADATASIMISGRYSZM1997.ORA
正将数据文件00021恢复到F:ORACLEORADATASIMISGRYSZM1998.ORA
正将数据文件00022恢复到F:ORACLEORADATASIMISGRYSZM1999.ORA
正将数据文件00023恢复到F:ORACLEORADATASIMISGRYSZM2000.ORA
正将数据文件00024恢复到F:ORACLEORADATASIMISGRYSZM2001.ORA
正将数据文件00025恢复到F:ORACLEORADATASIMISGRYSZM2002.ORA
正将数据文件00026恢复到F:ORACLEORADATASIMISGRYSZM2003.ORA
正将数据文件00027恢复到F:ORACLEORADATASIMISGRYSZM2004.ORA
正将数据文件00028恢复到F:ORACLEORADATASIMISGRYSZM2005.ORA
正将数据文件00029恢复到F:ORACLEORADATASIMISGRYSZM2006.ORA
正将数据文件00030恢复到F:ORACLEORADATASIMISGRYSZM2007.ORA
正将数据文件00031恢复到F:ORACLEORADATASIMISGRYSZM2008.ORA
正将数据文件00032恢复到F:ORACLEORADATASIMISGRYSZM_LOCAL_INDEX.ORA
正将数据文件00033恢复到F:ORACLEORADATASIMISGRYSZM_GLOBAL_INDEX.ORA

虽然指定了删除表空间前的时间点to_date('20040923 10:07:00','yyyymmdd hh24:mi:ss'),但在restore的时候rman并没有把photo表空间的数据文件(编号为00015的数据文件)还原。

需要还原备份前的控制文件才能还原表空间photo的数据文件。

C:>rman nocatalog

恢复管理器: 版本9.0.1.1.1 - Production

(c) Copyright 2001 Oracle Corporation. All rights reserved.

RMAN>set DBID=1304821840

正在执行命令: SET DBID

RMAN>connect target sys/change_on_install

连接到目标数据库: (未安装)
正在使用目标数据库控制文件替代恢复目录

RMAN>SET UNTIL TIME "to_date('20040923 10:07:00','yyyymmdd hh24:mi:ss')";

RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-00579: the following error occurred at 09/23/2004 10:42:51
RMAN-03031: this option of set command needs to be used inside a run block


RMAN>startup force nomount

Oracle 例程已启动

总的系统全局区域为 114061244字节

Fixed Size 282556字节
Variable Size 79691776字节
Database Buffers 33554432字节
Redo Buffers 532480字节

RMAN>RUN
2> {
3> SET UNTIL TIME "to_date('20040923 10:07:00','yyyymmdd hh24:mi:ss')";
4> RESTORE CONTROLFILE FROM AUTOBACKUP;
5> ALTER DATABASE MOUNT;
6> RESTORE DATABASE;
7> RECOVER DATABASE;
8> }

正在执行命令: SET until clause
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-00579: the following error occurred at 09/23/2004 10:44:48
RMAN-03002: failure during compilation of command
RMAN-03013: command type: set
RMAN-06003: ORACLE error from target database: ORA-01507: 未安装数据库
ORA-06512: 在"SYS.X$DBMS_RCVMAN", line 5146
ORA-06512: 在line 1
RMAN-06097: text of failing SQL statement: begin dbms_rcvman . setDatabase ( upp
er ( :dbname:dbname_i ) , :rlscn , :rltime , :fhdbi:fhdbi_i ) ; end ;
RMAN-06099: error occurred in source file: krmk.pc, line: 9442

RMAN>restore controlfile from autobackup;

启动 restore 于 23-9月 -04

分配的通道: ORA_DISK_1
通道 ORA_DISK_1: sid=10 devtype=DISK
通道 ORA_DISK_1, 正在查找当天控制文件自动备份:20040923
通道 ORA_DISK_1, 找到控制文件自动备份:c-1304821840-20040923-00
通道 ORA_DISK_1, 控制文件自动备份恢复已完成
正在复制控制文件
输出文件名=D:ORACLEORADATASIMISCONTROL01.CTL
输出文件名=D:ORACLEORADATASIMISCONTROL02.CTL
输出文件名=D:ORACLEORADATASIMISCONTROL03.CTL
完成 restore 于 23-9月 -04

RMAN>RUN
2> {
3> SET UNTIL TIME "to_date('20040923 10:07:00','yyyymmdd hh24:mi:ss')";
4> RESTORE DATABASE;
5> RECOVER DATABASE;
6> }

正在执行命令: SET until clause
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-00579: the following error occurred at 09/23/2004 10:45:12
RMAN-03002: failure during compilation of command
RMAN-03013: command type: set
RMAN-06003: ORACLE error from target database: ORA-01507: 未安装数据库
ORA-06512: 在"SYS.X$DBMS_RCVMAN", line 5146
ORA-06512: 在line 1
RMAN-06097: text of failing SQL statement: begin dbms_rcvman . setDatabase ( upp
er ( :dbname:dbname_i ) , :rlscn , :rltime , :fhdbi:fhdbi_i ) ; end ;
RMAN-06099: error occurred in source file: krmk.pc, line: 9442

RMAN>alter database mount;

数据库已加载

RMAN>RUN
2> {
3> SET UNTIL TIME "to_date('20040923 10:07:00','yyyymmdd hh24:mi:ss')";
4> RESTORE DATABASE;
5> RECOVER DATABASE;
6> }

正在执行命令: SET until clause

启动 restore 于 23-9月 -04

使用通道 ORA_DISK_1
通道 ORA_DISK_1: 正在开始恢复数据文件备份集
通道 ORA_DISK_1: 正在指定从备份集恢复的数据文件
正将数据文件00001恢复到D:ORACLEORADATASIMISSYSTEM01.DBF
正将数据文件00002恢复到D:ORACLEORADATASIMISUNDOTBS01.DBF
正将数据文件00003恢复到D:ORACLEORADATASIMISCWMLITE01.DBF
正将数据文件00004恢复到D:ORACLEORADATASIMISDRSYS01.DBF
正将数据文件00005恢复到D:ORACLEORADATASIMISEXAMPLE01.DBF
正将数据文件00006恢复到D:ORACLEORADATASIMISINDX01.DBF
正将数据文件00007恢复到D:ORACLEORADATASIMISTOOLS01.DBF
正将数据文件00008恢复到D:ORACLEORADATASIMISUSERS01.DBF
正将数据文件00009恢复到D:ORACLEORA90DATABASESIDB.ORA
正将数据文件00010恢复到D:ORACLEORA90DATABASEYB.ORA
正将数据文件00011恢复到D:ORACLEORA90DATABASEZS.ORA
正将数据文件00012恢复到D:ORACLEORA90DATABASEFF.ORA
正将数据文件00013恢复到D:ORACLEORA90DATABASEBM.ORA
正将数据文件00014恢复到D:ORACLEORA90DATABASESIDB_INDEX.ORA
正将数据文件00015恢复到D:ORACLEORA90DATABASEPHOTO.ORA
正将数据文件00016恢复到D:ORACLEORA90DATABASEHIS.ORA
正将数据文件00017恢复到F:ORACLEORADATASIMISGRYSZM1994.ORA
正将数据文件00018恢复到F:ORACLEORADATASIMISGRYSZM1995.ORA
正将数据文件00019恢复到F:ORACLEORADATASIMISGRYSZM1996.ORA
正将数据文件00020恢复到F:ORACLEORADATASIMISGRYSZM1997.ORA
正将数据文件00021恢复到F:ORACLEORADATASIMISGRYSZM1998.ORA
正将数据文件00022恢复到F:ORACLEORADATASIMISGRYSZM1999.ORA
正将数据文件00023恢复到F:ORACLEORADATASIMISGRYSZM2000.ORA
正将数据文件00024恢复到F:ORACLEORADATASIMISGRYSZM2001.ORA
正将数据文件00025恢复到F:ORACLEORADATASIMISGRYSZM2002.ORA
正将数据文件00026恢复到F:ORACLEORADATASIMISGRYSZM2003.ORA
正将数据文件00027恢复到F:ORACLEORADATASIMISGRYSZM2004.ORA
正将数据文件00028恢复到F:ORACLEORADATASIMISGRYSZM2005.ORA
正将数据文件00029恢复到F:ORACLEORADATASIMISGRYSZM2006.ORA
正将数据文件00030恢复到F:ORACLEORADATASIMISGRYSZM2007.ORA
正将数据文件00031恢复到F:ORACLEORADATASIMISGRYSZM2008.ORA
正将数据文件00032恢复到F:ORACLEORADATASIMISGRYSZM_LOCAL_INDEX.ORA
正将数据文件00033恢复到F:ORACLEORADATASIMISGRYSZM_GLOBAL_INDEX.ORA
通道 ORA_DISK_1: 已恢复备份段 1
段 handle=E:RMANSIMIS_04G0MNIM_1_1.BAK tag=null params=NULL
通道 ORA_DISK_1: 恢复完成
完成 restore 于 23-9月 -04

启动 recover 于 23-9月 -04
使用通道 ORA_DISK_1

正在开始介质的恢复

存档日志线程 1 序列 852 已作为文件 D:ORACLEORADATASIMISREDO02.LOG 存在于磁盘

通道 ORA_DISK_1: 正在启动到默认目标的存档日志恢复
通道 ORA_DISK_1: 正在恢复存档日志
存档日志线程 =1 序列=850
通道 ORA_DISK_1: 已恢复备份段 1
段 handle=E:RMANSIMIS_05G0MONF_1_1.BAK tag=null params=NULL
通道 ORA_DISK_1: 恢复完成
存档日志文件名 =F:ARCHIVESIMISARC_850_1.ARC 线程 =1 序列 =850
存档日志文件名 =F:ARCHIVESIMISARC_851_1.ARC 线程 =1 序列 =851
存档日志文件名 =D:ORACLEORADATASIMISREDO02.LOG 线程 =1 序列 =852
完成介质的恢复
完成 recover 于 23-9月 –04
RMAN>alter database open resetlogs;

数据库已打开

【***可以看到,表空间photo的数据文件(编号为00015的数据文件)已被还原。】

4. 检验是否恢复成功


连接到数据库,表空间和数据均已恢复。
SQL> desc test
名称 是否为空? 类型
----------------------------------------- -------- ----------------------------

C1 NUMBER

SQL> select *from test;

C1
----------
1

SQL> select ts#,name from v$tablespace;

TS# NAME
---------- ------------------------------
2 CWMLITE
3 DRSYS
4 EXAMPLE
5 INDX
0 SYSTEM
7 TOOLS
1 UNDOTBS
8 USERS
6 TEMP
9 SIDB
10 YB

TS# NAME
---------- ------------------------------
11 ZS
12 FF
13 BM
14 SIDB_INDEX
15 PHOTO
16 HIS
17 GRYSZM_1994
18 GRYSZM_1995
19 GRYSZM_1996
20 GRYSZM_1997
21 GRYSZM_1998

TS# NAME
---------- ------------------------------
22 GRYSZM_1999
23 GRYSZM_2000
24 GRYSZM_2001
25 GRYSZM_2002
26 GRYSZM_2003
27 GRYSZM_2004
28 GRYSZM_2005
29 GRYSZM_2006
30 GRYSZM_2007
31 GRYSZM_2008
32 GRYSZM_LOCAL_INDEX

TS# NAME
---------- ------------------------------
33 GRYSZM_GLOBAL_INDEX

已选择34行。


5. 小结与问题
在该例中可以从控制文件自动备份中还原删除表空间前的控制文件才能恢复表空间photo。这里带来的一个问题是:如果在删除表空间photo后,用rman作了多次的备份(包括控制文件备份),rman如何选择表空间photo删除前的控制文件?(其中一个解决的方法是在还原控制文件的时候指定备份集)


来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/6906/viewspace-21546/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
ITPUB数据库版块资深版主,对Oracle、PostgreSQL有深入研究。现就职于广州云图数据技术有限公司,系统架构师。

注册时间:2007-12-28

  • 博文量
    1392
  • 访问量
    3839716