|
测试 RMAN不完全恢复未备份的表空间
1.环境:
Oracle9R2(9.2.0.7)+WindowsXP
2.条件:
(1)T1时间点数据库全备T1.BAK
--SQLPLUS
Connected to Oracle9i Enterprise Edition Release 9.2.0.7.0
Connected as SYS
SQL> SELECT file_id, file_name, tablespace_name FROM dba_data_files ORDER BY file_id;
FILE_ID FILE_NAME TABLESPACE_NAME
---------- -------------------------------------------------------------------------------- ------------------------------
1 C:\ORACLEDB\ORA92\ORADATA\MYDB\SYSTEM01.DBF SYSTEM
2 C:\ORACLEDB\ORA92\ORADATA\MYDB\UNDOTBS01.DBF UNDOTBS
3 C:\ORACLEDB\ORA92\ORADATA\MYDB\UNDOTBS02.DBF UNDOTBS
4 C:\ORACLEDB\ORA92\ORADATA\MYDB\USER_TAB_10M01.DBF USER_TAB_10M
5 C:\ORACLEDB\ORA92\ORADATA\MYDB\USER_IND_10M01.DBF USER_IND_10M
6 C:\ORACLEDB\ORA92\ORADATA\MYDB\PERFSTAT01.DBF PERFSTAT
7 C:\ORACLEDB\ORA92\ORADATA\MYDB\TEST01.DBF TEST
8 C:\ORACLEDB\ORA92\ORADATA\MYDB\USER_TAB_10M02.DBF USER_TAB_10M
8 rows selected
Executed in 0.188 seconds
--RMAN
恢复管理器: 版本9.2.0.7.0 - Production
Copyright (c) 1995, 2002, Oracle Corporation. All rights reserved.
连接到目标数据库: MYDB (DBID=2540312515)
正在使用目标数据库控制文件替代恢复目录
RMAN> show all;
RMAN 配置参数为:
CONFIGURE RETENTION POLICY TO REDUNDANCY 1; # default
CONFIGURE BACKUP OPTIMIZATION OFF; # default
CONFIGURE DEFAULT DEVICE TYPE TO DISK; # default
CONFIGURE CONTROLFILE AUTOBACKUP OFF; # default
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '%F'; # default
CONFIGURE DEVICE TYPE DISK PARALLELISM 1; # default
CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default
CONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default
CONFIGURE MAXSETSIZE TO UNLIMITED; # default
CONFIGURE SNAPSHOT CONTROLFILE NAME TO 'C:\ORACLEDB\ORA92\DATABASE\SNCFMYDB.ORA'; # default
RMAN> CONFIGURE CONTROLFILE AUTOBACKUP ON;
新的 RMAN 配置参数:
CONFIGURE CONTROLFILE AUTOBACKUP ON;
已成功存储新的 RMAN 配置参数
RMAN> backup full database format='C:\T1.BAK';
启动 backup 于 20-8月 -07
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: sid=18 devtype=DISK
通道 ORA_DISK_1: 正在启动 full 数据文件备份集
通道 ORA_DISK_1: 正在指定备份集中的数据文件
输入数据文件 fno=00001 name=C:\ORACLEDB\ORA92\ORADATA\MYDB\SYSTEM01.DBF
输入数据文件 fno=00006 name=C:\ORACLEDB\ORA92\ORADATA\MYDB\PERFSTAT01.DBF
输入数据文件 fno=00004 name=C:\ORACLEDB\ORA92\ORADATA\MYDB\USER_TAB_10M01.DBF
输入数据文件 fno=00005 name=C:\ORACLEDB\ORA92\ORADATA\MYDB\USER_IND_10M01.DBF
输入数据文件 fno=00007 name=C:\ORACLEDB\ORA92\ORADATA\MYDB\TEST01.DBF
输入数据文件 fno=00008 name=C:\ORACLEDB\ORA92\ORADATA\MYDB\USER_TAB_10M02.DBF
输入数据文件 fno=00002 name=C:\ORACLEDB\ORA92\ORADATA\MYDB\UNDOTBS01.DBF
输入数据文件 fno=00003 name=C:\ORACLEDB\ORA92\ORADATA\MYDB\UNDOTBS02.DBF
通道 ORA_DISK_1: 正在启动段 1 于 20-8月 -07
通道 ORA_DISK_1: 已完成段 1 于 20-8月 -07
段 handle=C:\T1.BAK comment=NONE
通道 ORA_DISK_1: 备份集已完成, 经过时间:00:00:55
完成 backup 于 20-8月 -07
启动 Control File and SPFILE Autobackup 于 20-8月 -07
段 handle=C:\ORACLEDB\ORA92\DATABASE\C-2540312515-20070820-00 comment=NONE
完成 Control File and SPFILE Autobackup 于 20-8月 -07
--Alert.log
Mon Aug 20 11:45:34 2007
Starting control autobackup
Control autobackup written to DISK device
handle 'C:\ORACLEDB\ORA92\DATABASE\C-2540312515-20070820-00'
(2)创建表空间ABC,数据文件ABC.DBF,并再其上建立表MYDB.ABCTEST,查看当前SCN
--SQLPLUS
SQL> CREATE TABLESPACE ABC DATAFILE 'C:\ORACLEDB\ORA92\ORADATA\MYDB\ABC.DBF' SIZE 5M;
Tablespace created
Executed in 2.062 seconds
SQL> CREATE TABLE MYDB.ABCTEST TABLESPACE ABC AS SELECT * FROM V$VERSION;
Table created
Executed in 0.25 seconds
SQL> SELECT * FROM MYDB.ABCTEST;
BANNER
----------------------------------------------------------------
Oracle9i Enterprise Edition Release 9.2.0.7.0 - Production
PL/SQL Release 9.2.0.7.0 - Production
CORE 9.2.0.7.0 Production
TNS for 32-bit Windows: Version 9.2.0.7.0 - Production
NLSRTL Version 9.2.0.7.0 - Production
Executed in 0.015 seconds
SQL> SELECT DBMS_FLASHBACK.GET_SYSTEM_CHANGE_NUMBER FROM DUAL;
GET_SYSTEM_CHANGE_NUMBER
------------------------
1284888
Executed in 0.11 seconds
--Alert.log
Mon Aug 20 11:46:25 2007
CREATE TABLESPACE ABC DATAFILE 'C:\ORACLEDB\ORA92\ORADATA\MYDB\ABC.DBF' SIZE 5M
Mon Aug 20 11:46:26 2007
Starting control autobackup
Control autobackup written to DISK device
handle 'C:\ORACLEDB\ORA92\DATABASE\C-2540312515-20070820-01'
Completed: CREATE TABLESPACE ABC DATAFILE 'C:\ORACLEDB\ORA92\
(3)删除表空间ABC及其数据文件ABC.DBF
--SQLPLUS
SQL> DROP TABLESPACE ABC INCLUDING CONTENTS AND DATAFILES;
Tablespace dropped
Executed in 3.015 seconds
--Alert.log
Mon Aug 20 11:48:57 2007
DROP TABLESPACE ABC INCLUDING CONTENTS AND DATAFILES
Mon Aug 20 11:48:59 2007
Deleted file C:\ORACLEDB\ORA92\ORADATA\MYDB\ABC.DBF
Starting control autobackup
Control autobackup written to DISK device
handle 'C:\ORACLEDB\ORA92\DATABASE\C-2540312515-20070820-02'
Completed: DROP TABLESPACE ABC INCLUDING CONTENTS AND DATAFIL
(4)T2时间点数据库全备T2.BAK
--RMAN
RMAN> backup full database format='C:\T2.BAK';
启动 backup 于 20-8月 -07
使用通道 ORA_DISK_1
通道 ORA_DISK_1: 正在启动 full 数据文件备份集
通道 ORA_DISK_1: 正在指定备份集中的数据文件
输入数据文件 fno=00001 name=C:\ORACLEDB\ORA92\ORADATA\MYDB\SYSTEM01.DBF
输入数据文件 fno=00006 name=C:\ORACLEDB\ORA92\ORADATA\MYDB\PERFSTAT01.DBF
输入数据文件 fno=00004 name=C:\ORACLEDB\ORA92\ORADATA\MYDB\USER_TAB_10M01.DBF
输入数据文件 fno=00005 name=C:\ORACLEDB\ORA92\ORADATA\MYDB\USER_IND_10M01.DBF
输入数据文件 fno=00007 name=C:\ORACLEDB\ORA92\ORADATA\MYDB\TEST01.DBF
输入数据文件 fno=00008 name=C:\ORACLEDB\ORA92\ORADATA\MYDB\USER_TAB_10M02.DBF
输入数据文件 fno=00002 name=C:\ORACLEDB\ORA92\ORADATA\MYDB\UNDOTBS01.DBF
输入数据文件 fno=00003 name=C:\ORACLEDB\ORA92\ORADATA\MYDB\UNDOTBS02.DBF
通道 ORA_DISK_1: 正在启动段 1 于 20-8月 -07
通道 ORA_DISK_1: 已完成段 1 于 20-8月 -07
段 handle=C:\T2.BAK comment=NONE
通道 ORA_DISK_1: 备份集已完成, 经过时间:00:00:56
完成 backup 于 20-8月 -07
启动 Control File and SPFILE Autobackup 于 20-8月 -07
段 handle=C:\ORACLEDB\ORA92\DATABASE\C-2540312515-20070820-03 comment=NONE
完成 Control File and SPFILE Autobackup 于 20-8月 -07
--Alter.log
Mon Aug 20 11:50:33 2007
Starting control autobackup
Control autobackup written to DISK device
handle 'C:\ORACLEDB\ORA92\DATABASE\C-2540312515-20070820-03'
3.目的:
恢复MYDB.ABCTEST中的数据(表空间ABC,数据文件ABC.DBF)
4.步骤
(1)关闭数据库,进入NOMOUNT状态
--SQLPLUS
SQL> SHUTDOWN IMMEDIATE;
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> STARTUP NOMOUNT;
ORACLE 例程已经启动。
(2)用RMAN恢复控制文件(使用创建表空间ABC后生成的控制文件备份)
--RMAN
恢复管理器: 版本9.2.0.7.0 - Production
Copyright (c) 1995, 2002, Oracle Corporation. All rights reserved.
连接到目标数据库: MYDB(未安装)
正在使用目标数据库控制文件替代恢复目录
RMAN> RESTORE CONTROLFILE FROM 'C:\ORACLEDB\ORA92\DATABASE\C-2540312515-20070820-01';--使用创建表空间ABC后生成的控制文件备份(根据Alert.log查出)
启动 restore 于 20-8月 -07
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: sid=13 devtype=DISK
通道 ORA_DISK_1: 正在恢复控制文件
通道 ORA_DISK_1: 恢复完成
正在复制控制文件
输出文件名=C:\ORACLEDB\ORA92\ORADATA\MYDB\CONTROL01.CTL
输出文件名=C:\ORACLEDB\ORA92\ORADATA\MYDB\CONTROL02.CTL
输出文件名=C:\ORACLEDB\ORA92\ORADATA\MYDB\CONTROL03.CTL
完成 restore 于 20-8月 -07
(3)用恢复后的控制文件MOUNT数据库,尝试基于SCN 1284888做不完全恢复.
--SQLPLUS
SQL> ALTER DATABASE MOUNT;
数据库已更改。
已用时间: 00: 00: 04.02
--RMAN
恢复管理器: 版本9.2.0.7.0 - Production
Copyright (c) 1995, 2002, Oracle Corporation. All rights reserved.
连接到目标数据库: MYDB (DBID=2540312515)
正在使用目标数据库控制文件替代恢复目录
RMAN> RUN
2> {
3> SET UNTIL SCN 1284888;
4> RESTORE DATABASE;
5> RECOVER DATABASE;
6> }
正在执行命令: SET until clause
启动 restore 于 20-8月 -07
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: sid=11 devtype=DISK
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of restore command at 08/20/2007 12:53:10
RMAN-06026: some targets not found - aborting restore
RMAN-06023: no backup or copy of datafile 9 found to restore
(4)手动建立数据文件9,RESTORE其他数据文件并RECOVER数据库,最后RESETLOGS方式打开数据库,验证结果
--SQLPLUS
SQL> ALTER DATABASE CREATE DATAFILE 9 AS 'C:\ORACLEDB\ORA92\ORADATA\MYDB\ABC.DBF';
数据库已更改。
已用时间: 00: 00: 00.02
--RMAN
恢复管理器: 版本9.2.0.7.0 - Production
Copyright (c) 1995, 2002, Oracle Corporation. All rights reserved.
连接到目标数据库: MYDB (DBID=2540312515)
正在使用目标数据库控制文件替代恢复目录
RMAN> RUN
2> {
3> SET UNTIL SCN 1284888;
4> RESTORE DATAFILE 1,2,3,4,5,6,7,8;
5> RECOVER DATABASE;
6> }
正在执行命令: SET until clause
启动 restore 于 20-8月 -07
使用通道 ORA_DISK_1
通道 ORA_DISK_1: 正在开始恢复数据文件备份集
通道 ORA_DISK_1: 正在指定从备份集恢复的数据文件
正将数据文件00001恢复到C:\ORACLEDB\ORA92\ORADATA\MYDB\SYSTEM01.DBF
正将数据文件00002恢复到C:\ORACLEDB\ORA92\ORADATA\MYDB\UNDOTBS01.DBF
正将数据文件00003恢复到C:\ORACLEDB\ORA92\ORADATA\MYDB\UNDOTBS02.DBF
正将数据文件00004恢复到C:\ORACLEDB\ORA92\ORADATA\MYDB\USER_TAB_10M01.DBF
正将数据文件00005恢复到C:\ORACLEDB\ORA92\ORADATA\MYDB\USER_IND_10M01.DBF
正将数据文件00006恢复到C:\ORACLEDB\ORA92\ORADATA\MYDB\PERFSTAT01.DBF
正将数据文件00007恢复到C:\ORACLEDB\ORA92\ORADATA\MYDB\TEST01.DBF
正将数据文件00008恢复到C:\ORACLEDB\ORA92\ORADATA\MYDB\USER_TAB_10M02.DBF
通道 ORA_DISK_1: 已恢复备份段 1
段 handle=C:\T1.BAK tag=TAG20070820T114438 params=NULL
通道 ORA_DISK_1: 恢复完成
完成 restore 于 20-8月 -07
启动 recover 于 20-8月 -07
使用通道 ORA_DISK_1
正在开始介质的恢复
存档日志线程 1 序列 1 已作为文件 C:\ORACLEDB\ORA92\ORADATA\MYDB\REDO03.LOG 存在于磁盘上
存档日志文件名 =C:\ORACLEDB\ORA92\ORADATA\MYDB\REDO03.LOG 线程 =1 序列 =1
完成介质的恢复
完成 recover 于 20-8月 -07
--SQLPLUS
SQL> ALTER DATABASE OPEN RESETLOGS;
数据库已更改。
已用时间: 00: 00: 09.04
SQL> SELECT * FROM MYDB.ABCTEST;
BANNER
----------------------------------------------------------------------------------------------------
Oracle9i Enterprise Edition Release 9.2.0.7.0 - Production
PL/SQL Release 9.2.0.7.0 - Production
CORE 9.2.0.7.0 Production
TNS for 32-bit Windows: Version 9.2.0.7.0 - Production
NLSRTL Version 9.2.0.7.0 - Production
已用时间: 00: 00: 00.00
成功恢复
*********************************************************************************************************************************************************
(2)'用RMAN恢复控制文件(使用创建表空间ABC前生成的控制文件备份)
--RMAN
恢复管理器: 版本9.2.0.7.0 - Production
Copyright (c) 1995, 2002, Oracle Corporation. All rights reserved.
连接到目标数据库: MYDB(未安装)
正在使用目标数据库控制文件替代恢复目录
RMAN> RESTORE CONTROLFILE FROM 'C:\ORACLEDB\ORA92\DATABASE\C-2540312515-20070820-00';--使用创建表空间ABC前生成的控制文件备份(根据Alert.log查出)
启动 restore 于 20-8月 -07
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: sid=13 devtype=DISK
通道 ORA_DISK_1: 正在恢复控制文件
通道 ORA_DISK_1: 恢复完成
正在复制控制文件
输出文件名=C:\ORACLEDB\ORA92\ORADATA\MYDB\CONTROL01.CTL
输出文件名=C:\ORACLEDB\ORA92\ORADATA\MYDB\CONTROL02.CTL
输出文件名=C:\ORACLEDB\ORA92\ORADATA\MYDB\CONTROL03.CTL
完成 restore 于 20-8月 -07
(3)'用恢复后的控制文件MOUNT数据库,尝试基于SCN 1284888做不完全恢复.
--SQLPLUS
SQL> ALTER DATABASE MOUNT;
数据库已更改。
已用时间: 00: 00: 04.02
--RMAN
恢复管理器: 版本9.2.0.7.0 - Production
Copyright (c) 1995, 2002, Oracle Corporation. All rights reserved.
连接到目标数据库: MYDB (DBID=2540312515)
正在使用目标数据库控制文件替代恢复目录
RMAN> RUN
2> {
3> SET UNTIL SCN 1284888;
4> RESTORE DATABASE;
5> RECOVER DATABASE;
6> }
正在执行命令: SET until clause
启动 restore 于 20-8月 -07
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: sid=11 devtype=DISK
通道 ORA_DISK_1: 正在开始恢复数据文件备份集
通道 ORA_DISK_1: 正在指定从备份集恢复的数据文件
正将数据文件00001恢复到C:\ORACLEDB\ORA92\ORADATA\MYDB\SYSTEM01.DBF
正将数据文件00002恢复到C:\ORACLEDB\ORA92\ORADATA\MYDB\UNDOTBS01.DBF
正将数据文件00003恢复到C:\ORACLEDB\ORA92\ORADATA\MYDB\UNDOTBS02.DBF
正将数据文件00004恢复到C:\ORACLEDB\ORA92\ORADATA\MYDB\USER_TAB_10M01.DBF
正将数据文件00005恢复到C:\ORACLEDB\ORA92\ORADATA\MYDB\USER_IND_10M01.DBF
正将数据文件00006恢复到C:\ORACLEDB\ORA92\ORADATA\MYDB\PERFSTAT01.DBF
正将数据文件00007恢复到C:\ORACLEDB\ORA92\ORADATA\MYDB\TEST01.DBF
正将数据文件00008恢复到C:\ORACLEDB\ORA92\ORADATA\MYDB\USER_TAB_10M02.DBF
通道 ORA_DISK_1: 已恢复备份段 1
段 handle=C:\T1.BAK tag=TAG20070820T135514 params=NULL
通道 ORA_DISK_1: 恢复完成
完成 restore 于 20-8月 -07
启动 recover 于 20-8月 -07
使用通道 ORA_DISK_1
正在开始介质的恢复
存档日志线程 1 序列 1 已作为文件 C:\ORACLEDB\ORA92\ORADATA\MYDB\REDO03.LOG 存在于磁盘上
存档日志文件名 =C:\ORACLEDB\ORA92\ORADATA\MYDB\REDO03.LOG 线程 =1 序列 =1
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of recover command at 08/20/2007 14:07:35
ORA-00283: recovery session canceled due to errors
RMAN-11003: failure during parse/execution of SQL statement: alter database recover logfile 'C:\ORAC
LEDB\ORA92\ORADATA\MYDB\REDO03.LOG'
ORA-00283: 恢复会话因错误而取消
ORA-01244: 未命名的数据文件由介质恢复添加至控制文件
ORA-01110: 数据文件 9: 'C:\ORACLEDB\ORA92\ORADATA\MYDB\ABC.DBF'
(4)'手动建立数据文件9,RESTORE其他数据文件并RECOVER数据库,最后RESETLOGS方式打开数据库,验证结果
--SQLPLUS
SQL> ALTER DATABASE CREATE DATAFILE 9 AS 'C:\ORACLEDB\ORA92\ORADATA\MYDB\ABC.DBF';
数据库已更改。
已用时间: 00: 00: 00.02
--RMAN
RMAN> RUN
2> {
3> SET UNTIL SCN 1284888;
4> RESTORE DATAFILE 1,2,3,4,5,6,7,8;
5> RECOVER DATABASE;
6> }
正在执行命令: SET until clause
启动 restore 于 20-8月 -07
使用通道 ORA_DISK_1
通道 ORA_DISK_1: 正在开始恢复数据文件备份集
通道 ORA_DISK_1: 正在指定从备份集恢复的数据文件
正将数据文件00001恢复到C:\ORACLEDB\ORA92\ORADATA\MYDB\SYSTEM01.DBF
正将数据文件00002恢复到C:\ORACLEDB\ORA92\ORADATA\MYDB\UNDOTBS01.DBF
正将数据文件00003恢复到C:\ORACLEDB\ORA92\ORADATA\MYDB\UNDOTBS02.DBF
正将数据文件00004恢复到C:\ORACLEDB\ORA92\ORADATA\MYDB\USER_TAB_10M01.DBF
正将数据文件00005恢复到C:\ORACLEDB\ORA92\ORADATA\MYDB\USER_IND_10M01.DBF
正将数据文件00006恢复到C:\ORACLEDB\ORA92\ORADATA\MYDB\PERFSTAT01.DBF
正将数据文件00007恢复到C:\ORACLEDB\ORA92\ORADATA\MYDB\TEST01.DBF
正将数据文件00008恢复到C:\ORACLEDB\ORA92\ORADATA\MYDB\USER_TAB_10M02.DBF
通道 ORA_DISK_1: 已恢复备份段 1
段 handle=C:\T1.BAK tag=TAG20070820T135514 params=NULL
通道 ORA_DISK_1: 恢复完成
完成 restore 于 20-8月 -07
启动 recover 于 20-8月 -07
使用通道 ORA_DISK_1
正在开始介质的恢复
存档日志线程 1 序列 1 已作为文件 C:\ORACLEDB\ORA92\ORADATA\MYDB\REDO03.LOG 存在于磁盘上
存档日志文件名 =C:\ORACLEDB\ORA92\ORADATA\MYDB\REDO03.LOG 线程 =1 序列 =1
完成介质的恢复
完成 recover 于 20-8月 -07
--SQLPLUS
SQL> ALTER DATABASE OPEN RESETLOGS;
数据库已更改。
已用时间: 00: 00: 09.04
SQL> SELECT * FROM MYDB.ABCTEST;
BANNER
----------------------------------------------------------------------------------------------------
Oracle9i Enterprise Edition Release 9.2.0.7.0 - Production
PL/SQL Release 9.2.0.7.0 - Production
CORE 9.2.0.7.0 Production
TNS for 32-bit Windows: Version 9.2.0.7.0 - Production
NLSRTL Version 9.2.0.7.0 - Production
已用时间: 00: 00: 00.00
成功恢复 |
|