这篇文章讨论的是数据库备份中没有新建表空间对应数据文件的备份,但创建表空间及其之后的归档Redo日志都存在,新建表空间丢失之后的还原与恢复。这里分RMAN和sqlplus工具,以及新旧控制文件来讨论这个问题。
1.创建数据库备份。
C:\Users\LIUBINGLIN>rman target /
恢复管理器: Release 11.2.0.1.0 - Production on 星期日 5月 6 23:18:44 2012
Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved.
连接到目标数据库: ORCL (DBID=1290386656)
RMAN> list backup of database;
使用目标数据库控制文件替代恢复目录
备份集列表
===================
BS 关键字 类型 LV 大小 设备类型 经过时间 完成时间
------- ---- -- ---------- ----------- ------------ ----------
6 Full 1.02G DISK 00:00:53 05-5月 -12
BP 关键字: 6 状态: AVAILABLE 已压缩: NO 标记: TAG20120505T155657
段名:D:\ORCL\BACKUPSET\2012_05_05\O1_MF_NNNDF_TAG20120505T155657_7T9QB9OR_.BKP
备份集 6 中的数据文件列表
文件 LV 类型 Ckp SCN Ckp 时间 名称
---- -- ---- ---------- ---------- ----
1 Full 2924280 05-5月 -12 D:\APP\ORACLE\ORADATA\ORCL\SYSTEM01.DBF
2 Full 2924280 05-5月 -12 D:\APP\ORACLE\ORADATA\ORCL\SYSAUX01.DBF
3 Full 2924280 05-5月 -12 D:\APP\ORACLE\ORADATA\ORCL\UNDOTBS01.DBF
RMAN> delete noprompt backup of database;
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: SID=9 设备类型=DISK
备份片段列表
BP 关键字 BS 关键字 Pc# Cp# 状态 设备类型段名称
------- ------- --- --- ----------- ----------- ----------
6 6 1 1 AVAILABLE DISK D:\ORCL\BACKUPSET\2012_05_05\O1_MF_NNNDF_TAG20120505T155657_7T9QB9OR_.BKP
已删除备份片段
备份片段句柄=D:\ORCL\BACKUPSET\2012_05_05\O1_MF_NNNDF_TAG20120505T155657_7T9QB9OR_.BKP RECID=6 STAMP=782495817
1 对象已删除
RMAN> backup database include current controlfile plus archivelog;
启动 backup 于 06-5月 -12
当前日志已存档
使用通道 ORA_DISK_1
通道 ORA_DISK_1: 正在启动归档日志备份集
通道 ORA_DISK_1: 正在指定备份集内的归档日志
输入归档日志线程=1 序列=2 RECID=2 STAMP=781905401
输入归档日志线程=1 序列=3 RECID=3 STAMP=781905404
输入归档日志线程=1 序列=4 RECID=1 STAMP=781905401
通道 ORA_DISK_1: 正在启动段 1 于 06-5月 -12
通道 ORA_DISK_1: 已完成段 1 于 06-5月 -12
段句柄=D:\ORCL\BACKUPSET\2012_05_06\O1_MF_ANNNN_TAG20120506T232059_7TF5PWF3_.BKP 标记=TAG20120506T232059 注释=NONE
通道 ORA_DISK_1: 备份集已完成, 经过时间:00:00:04
通道 ORA_DISK_1: 正在启动归档日志备份集
通道 ORA_DISK_1: 正在指定备份集内的归档日志
输入归档日志线程=1 序列=1 RECID=4 STAMP=781990766
通道 ORA_DISK_1: 正在启动段 1 于 06-5月 -12
通道 ORA_DISK_1: 已完成段 1 于 06-5月 -12
段句柄=D:\ORCL\BACKUPSET\2012_05_06\O1_MF_ANNNN_TAG20120506T232059_7TF5PZB1_.BKP 标记=TAG20120506T232059 注释=NONE
通道 ORA_DISK_1: 备份集已完成, 经过时间:00:00:01
通道 ORA_DISK_1: 正在启动归档日志备份集
通道 ORA_DISK_1: 正在指定备份集内的归档日志
输入归档日志线程=1 序列=1 RECID=14 STAMP=782498923
通道 ORA_DISK_1: 正在启动段 1 于 06-5月 -12
通道 ORA_DISK_1: 已完成段 1 于 06-5月 -12
段句柄=D:\ORCL\BACKUPSET\2012_05_06\O1_MF_ANNNN_TAG20120506T232059_7TF5Q0L8_.BKP 标记=TAG20120506T232059 注释=NONE
通道 ORA_DISK_1: 备份集已完成, 经过时间:00:00:01
通道 ORA_DISK_1: 正在启动归档日志备份集
通道 ORA_DISK_1: 正在指定备份集内的归档日志
输入归档日志线程=1 序列=1 RECID=15 STAMP=782608859
通道 ORA_DISK_1: 正在启动段 1 于 06-5月 -12
通道 ORA_DISK_1: 已完成段 1 于 06-5月 -12
段句柄=D:\ORCL\BACKUPSET\2012_05_06\O1_MF_ANNNN_TAG20120506T232059_7TF5Q1T0_.BKP 标记=TAG20120506T232059 注释=NONE
通道 ORA_DISK_1: 备份集已完成, 经过时间:00:00:01
完成 backup 于 06-5月 -12
启动 backup 于 06-5月 -12
使用通道 ORA_DISK_1
全部数据库备份将排除文件 4
全部数据库备份将排除文件 6
通道 ORA_DISK_1: 正在启动全部数据文件备份集
通道 ORA_DISK_1: 正在指定备份集内的数据文件
输入数据文件: 文件号=00001 名称=D:\APP\ORACLE\ORADATA\ORCL\SYSTEM01.DBF
输入数据文件: 文件号=00002 名称=D:\APP\ORACLE\ORADATA\ORCL\SYSAUX01.DBF
输入数据文件: 文件号=00003 名称=D:\APP\ORACLE\ORADATA\ORCL\UNDOTBS01.DBF
输入数据文件: 文件号=00007 名称=D:\APP\ORACLE\ORADATA\ORCL\DATA01.DBF
通道 ORA_DISK_1: 正在启动段 1 于 06-5月 -12
通道 ORA_DISK_1: 已完成段 1 于 06-5月 -12
段句柄=D:\ORCL\BACKUPSET\2012_05_06\O1_MF_NNNDF_TAG20120506T232107_7TF5Q4RW_.BKP 标记=TAG20120506T232107 注释=NONE
通道 ORA_DISK_1: 备份集已完成, 经过时间:00:01:05
通道 ORA_DISK_1: 正在启动全部数据文件备份集
通道 ORA_DISK_1: 正在指定备份集内的数据文件
备份集内包括当前控制文件
通道 ORA_DISK_1: 正在启动段 1 于 06-5月 -12
通道 ORA_DISK_1: 已完成段 1 于 06-5月 -12
段句柄=D:\ORCL\BACKUPSET\2012_05_06\O1_MF_NCNNF_TAG20120506T232107_7TF5S5XX_.BKP 标记=TAG20120506T232107 注释=NONE
通道 ORA_DISK_1: 备份集已完成, 经过时间:00:00:04
完成 backup 于 06-5月 -12
启动 backup 于 06-5月 -12
当前日志已存档
使用通道 ORA_DISK_1
通道 ORA_DISK_1: 正在启动归档日志备份集
通道 ORA_DISK_1: 正在指定备份集内的归档日志
输入归档日志线程=1 序列=2 RECID=16 STAMP=782608937
通道 ORA_DISK_1: 正在启动段 1 于 06-5月 -12
通道 ORA_DISK_1: 已完成段 1 于 06-5月 -12
段句柄=D:\ORCL\BACKUPSET\2012_05_06\O1_MF_ANNNN_TAG20120506T232217_7TF5SBBB_.BKP 标记=TAG20120506T232217 注释=NONE
通道 ORA_DISK_1: 备份集已完成, 经过时间:00:00:01
完成 backup 于 06-5月 -12
启动 Control File and SPFILE Autobackup 于 06-5月 -12
段 handle=D:\ORCL\AUTOBACKUP\2012_05_06\O1_MF_S_782608939_7TF5SFX1_.BKP comment=NONE
完成 Control File and SPFILE Autobackup 于 06-5月 -12
RMAN> show exclude;
db_unique_name 为 ORCL 的数据库的 RMAN 配置参数为:
CONFIGURE EXCLUDE FOR TABLESPACE 'USERS';
RMAN> report schema;
db_unique_name 为 ORCL 的数据库的数据库方案报表
永久数据文件列表
===========================
文件大小 (MB) 表空间 回退段数据文件名称
---- -------- -------------------- ------- ------------------------
1 700 SYSTEM *** D:\APP\ORACLE\ORADATA\ORCL\SYSTEM01.DBF
2 560 SYSAUX *** D:\APP\ORACLE\ORADATA\ORCL\SYSAUX01.DBF
3 200 UNDOTBS1 *** D:\APP\ORACLE\ORADATA\ORCL\UNDOTBS01.DBF
4 173 USERS *** D:\APP\ORACLE\ORADATA\ORCL\USERS01.DBF
6 5 USERS *** D:\APP\ORACLE\USER01.DBF
7 5 DATA *** D:\APP\ORACLE\ORADATA\ORCL\DATA01.DBF
RMAN> backup datafile 4,6;
启动 backup 于 07-5月 -12
使用通道 ORA_DISK_1
通道 ORA_DISK_1: 正在启动全部数据文件备份集
通道 ORA_DISK_1: 正在指定备份集内的数据文件
输入数据文件: 文件号=00004 名称=D:\APP\ORACLE\ORADATA\ORCL\USERS01.DBF
输入数据文件: 文件号=00006 名称=D:\APP\ORACLE\USER01.DBF
通道 ORA_DISK_1: 正在启动段 1 于 07-5月 -12
通道 ORA_DISK_1: 已完成段 1 于 07-5月 -12
段句柄=D:\ORCL\BACKUPSET\2012_05_07\O1_MF_NNNDF_TAG20120507T000338_7TF86TMS_.BKP 标记=TAG20120507T000338 注释=NONE
通道 ORA_DISK_1: 备份集已完成, 经过时间:00:00:03
完成 backup 于 07-5月 -12
启动 Control File and SPFILE Autobackup 于 07-5月 -12
段 handle=D:\ORCL\AUTOBACKUP\2012_05_07\O1_MF_S_782611421_7TF86Z7O_.BKP comment=NONE
完成 Control File and SPFILE Autobackup 于 07-5月 -12
2.创建新表空间。
C:\Users\LIUBINGLIN>sqlplus / as sysdba
SQL*Plus: Release 11.2.0.1.0 Production on 星期一 5月 7 08:45:35 2012
Copyright (c) 1982, 2010, Oracle. All rights reserved.
连接到:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production
With the Partitioning, Oracle Label Security, OLAP, Data Mining,
Oracle Database Vault and Real Application Testing options
SQL> create tablespace xiaoyang datafile 'D:\APP\ORACLE\ORADATA\ORCL\xiaoyang01.dbf' size 5m;
表空间已创建。
SQL> create table test.test123(id number) tablespace xiaoyang;
表已创建。
SQL> insert into test.test123 values(123);
已创建 1 行。
SQL> commit;
提交完成。
3.使用RMAN工具测试:旧控制文件,无新表空间的备份,归档Redo日志都存在的恢复。
C:\Users\LIUBINGLIN>sqlplus / as sysdba
SQL*Plus: Release 11.2.0.1.0 Production on 星期一 5月 7 08:47:34 2012
Copyright (c) 1982, 2010, Oracle. All rights reserved.
连接到:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production
With the Partitioning, Oracle Label Security, OLAP, Data Mining,
Oracle Database Vault and Real Application Testing options
SQL> shutdown abort
ORACLE 例程已经关闭。
SQL> startup nomount
ORACLE 例程已经启动。
Total System Global Area 535662592 bytes
Fixed Size 1375792 bytes
Variable Size 255853008 bytes
Database Buffers 272629760 bytes
Redo Buffers 5804032 bytes
C:\Users\LIUBINGLIN>rman target /
恢复管理器: Release 11.2.0.1.0 - Production on 星期一 5月 7 08:47:56 2012
Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved.
连接到目标数据库: ORCL (未装载)
RMAN> restore controlfile from 'D:\ORCL\AUTOBACKUP\2012_05_07\O1_MF_S_782611421_7TF86Z7O_.BKP';
启动 restore 于 07-5月 -12
使用目标数据库控制文件替代恢复目录
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: SID=134 设备类型=DISK
通道 ORA_DISK_1: 正在还原控制文件
通道 ORA_DISK_1: 还原完成, 用时: 00:00:01
输出文件名=D:\APP\ORACLE\CONTROL01.CTL
完成 restore 于 07-5月 -12
RMAN> alter database mount;
数据库已装载
释放的通道: ORA_DISK_1
C:\Users\LIUBINGLIN>sqlplus / as sysdba
SQL*Plus: Release 11.2.0.1.0 Production on 星期一 5月 7 08:48:49 2012
Copyright (c) 1982, 2010, Oracle. All rights reserved.
连接到:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production
With the Partitioning, Oracle Label Security, OLAP, Data Mining,
Oracle Database Vault and Real Application Testing options
SQL> select name from v$datafile;
NAME
--------------------------------------------------------------------------------
D:\APP\ORACLE\ORADATA\ORCL\SYSTEM01.DBF
D:\APP\ORACLE\ORADATA\ORCL\SYSAUX01.DBF
D:\APP\ORACLE\ORADATA\ORCL\UNDOTBS01.DBF
D:\APP\ORACLE\ORADATA\ORCL\USERS01.DBF
D:\APP\ORACLE\USER01.DBF
D:\APP\ORACLE\ORADATA\ORCL\DATA01.DBF
已选择6行。
C:\Users\LIUBINGLIN>rman target /
恢复管理器: Release 11.2.0.1.0 - Production on 星期一 5月 7 08:49:29 2012
Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved.
已连接到目标数据库: ORCL (DBID=1290386656, 未打开)
RMAN> list backup of database;
使用目标数据库控制文件替代恢复目录
备份集列表
===================
BS 关键字 类型 LV 大小 设备类型 经过时间 完成时间
------- ---- -- ---------- ----------- ------------ ----------
16 Full 1.01G DISK 00:00:57 06-5月 -12
BP 关键字: 16 状态: AVAILABLE 已压缩: NO 标记: TAG20120506T232107
段名:D:\ORCL\BACKUPSET\2012_05_06\O1_MF_NNNDF_TAG20120506T232107_7TF5Q4RW_.BKP
备份集 16 中的数据文件列表
文件 LV 类型 Ckp SCN Ckp 时间 名称
---- -- ---- ---------- ---------- ----
1 Full 2941118 06-5月 -12 D:\APP\ORACLE\ORADATA\ORCL\SYSTEM01.DBF
2 Full 2941118 06-5月 -12 D:\APP\ORACLE\ORADATA\ORCL\SYSAUX01.DBF
3 Full 2941118 06-5月 -12 D:\APP\ORACLE\ORADATA\ORCL\UNDOTBS01.DBF
7 Full 2941118 06-5月 -12 D:\APP\ORACLE\ORADATA\ORCL\DATA01.DBF
BS 关键字 类型 LV 大小 设备类型 经过时间 完成时间
------- ---- -- ---------- ----------- ------------ ----------
20 Full 48.29M DISK 00:00:03 07-5月 -12
BP 关键字: 20 状态: AVAILABLE 已压缩: NO 标记: TAG20120507T000338
段名:D:\ORCL\BACKUPSET\2012_05_07\O1_MF_NNNDF_TAG20120507T000338_7TF86TMS_.BKP
备份集 20 中的数据文件列表
文件 LV 类型 Ckp SCN Ckp 时间 名称
---- -- ---- ---------- ---------- ----
4 Full 2943251 07-5月 -12 D:\APP\ORACLE\ORADATA\ORCL\USERS01.DBF
6 Full 2943251 07-5月 -12 D:\APP\ORACLE\USER01.DBF
RMAN> restore database;
启动 restore 于 07-5月 -12
启动 implicit crosscheck backup 于 07-5月 -12
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: SID=134 设备类型=DISK
已交叉检验的 16 对象
完成 implicit crosscheck backup 于 07-5月 -12
启动 implicit crosscheck copy 于 07-5月 -12
使用通道 ORA_DISK_1
已交叉检验的 4 对象
完成 implicit crosscheck copy 于 07-5月 -12
搜索恢复区中的所有文件
正在编制文件目录...
目录编制完毕
已列入目录的文件的列表
=======================
文件名: D:\ORCL\AUTOBACKUP\2012_05_07\O1_MF_S_782611421_7TF86Z7O_.BKP
使用通道 ORA_DISK_1
全部数据库备份将排除文件 4
全部数据库备份将排除文件 6
通道 ORA_DISK_1: 正在开始还原数据文件备份集
通道 ORA_DISK_1: 正在指定从备份集还原的数据文件
通道 ORA_DISK_1: 将数据文件 00001 还原到 D:\APP\ORACLE\ORADATA\ORCL\SYSTEM01.DBF
通道 ORA_DISK_1: 将数据文件 00002 还原到 D:\APP\ORACLE\ORADATA\ORCL\SYSAUX01.DBF
通道 ORA_DISK_1: 将数据文件 00003 还原到 D:\APP\ORACLE\ORADATA\ORCL\UNDOTBS01.DBF
通道 ORA_DISK_1: 将数据文件 00007 还原到 D:\APP\ORACLE\ORADATA\ORCL\DATA01.DBF
通道 ORA_DISK_1: 正在读取备份片段 D:\ORCL\BACKUPSET\2012_05_06\O1_MF_NNNDF_TAG20120506T232107_7TF5Q4RW_.BKP
通道 ORA_DISK_1: 段句柄 = D:\ORCL\BACKUPSET\2012_05_06\O1_MF_NNNDF_TAG20120506T232107_7TF5Q4RW_.BKP 标记 = TAG20120506T232107
通道 ORA_DISK_1: 已还原备份片段 1
通道 ORA_DISK_1: 还原完成, 用时: 00:00:45
故障转移到上一个备份
完成 restore 于 07-5月 -12
RMAN> restore datafile 4,6;
启动 restore 于 07-5月 -12
使用通道 ORA_DISK_1
通道 ORA_DISK_1: 正在开始还原数据文件备份集
通道 ORA_DISK_1: 正在指定从备份集还原的数据文件
通道 ORA_DISK_1: 将数据文件 00004 还原到 D:\APP\ORACLE\ORADATA\ORCL\USERS01.DBF
通道 ORA_DISK_1: 将数据文件 00006 还原到 D:\APP\ORACLE\USER01.DBF
通道 ORA_DISK_1: 正在读取备份片段 D:\ORCL\BACKUPSET\2012_05_07\O1_MF_NNNDF_TAG20120507T000338_7TF86TMS_.BKP
通道 ORA_DISK_1: 段句柄 = D:\ORCL\BACKUPSET\2012_05_07\O1_MF_NNNDF_TAG20120507T000338_7TF86TMS_.BKP 标记 = TAG20120507T000338
通道 ORA_DISK_1: 已还原备份片段 1
通道 ORA_DISK_1: 还原完成, 用时: 00:00:03
完成 restore 于 07-5月 -12
RMAN> recover database;
启动 recover 于 07-5月 -12
使用通道 ORA_DISK_1
正在开始介质的恢复
线程 1 序列 2 的归档日志已作为文件 D:\APP\ORACLE\ORADATA\ORCL\REDO02.LOG 存在于磁盘上
线程 1 序列 3 的归档日志已作为文件 D:\APP\ORACLE\ORADATA\ORCL\REDO03.LOG 存在于磁盘上
归档日志文件名=D:\APP\ORACLE\ORADATA\ORCL\REDO02.LOG 线程=1 序列=2
归档日志文件名=D:\APP\ORACLE\ORADATA\ORCL\REDO03.LOG 线程=1 序列=3
创建数据文件, 文件号 = 5 名称 = D:\APP\ORACLE\ORADATA\ORCL\XIAOYANG01.DBF
归档日志文件名=D:\APP\ORACLE\ORADATA\ORCL\REDO03.LOG 线程=1 序列=3
介质恢复完成, 用时: 00:00:02
完成 recover 于 07-5月 -12
从上面的信息可以看出,使用RMAN来恢复控制文件中不存在的数据文件,RMAN会根据归档中的记录自动创建数据文件。
C:\Users\LIUBINGLIN>sqlplus / as sysdba
SQL*Plus: Release 11.2.0.1.0 Production on 星期一 5月 7 09:25:21 2012
Copyright (c) 1982, 2010, Oracle. All rights reserved.
连接到:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production
With the Partitioning, Oracle Label Security, OLAP, Data Mining,
Oracle Database Vault and Real Application Testing options
SQL> alter database open resetlogs;
数据库已更改。
4.使用sqlplus工具测试:旧控制文件,无新表空间的备份,归档Redo日志都存在的恢复。
C:\Users\LIUBINGLIN>sqlplus/ as sysdba
SQL*Plus: Release 11.2.0.1.0 Production on 星期一 5月 7 09:53:35 2012
Copyright (c) 1982, 2010, Oracle. All rights reserved.
连接到:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production
With the Partitioning, Oracle Label Security, OLAP, Data Mining,
Oracle Database Vault and Real Application Testing options
SQL> shutdown immediate
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
C:\Users\LIUBINGLIN>sqlplus / as sysdba
SQL*Plus: Release 11.2.0.1.0 Production on 星期一 5月 7 09:54:37 2012
Copyright (c) 1982, 2010, Oracle. All rights reserved.
已连接到空闲例程。
SQL> startup nomount
ORACLE 例程已经启动。
Total System Global Area 535662592 bytes
Fixed Size 1375792 bytes
Variable Size 255853008 bytes
Database Buffers 272629760 bytes
Redo Buffers 5804032 bytes
C:\Users\LIUBINGLIN>rman target /
恢复管理器: Release 11.2.0.1.0 - Production on 星期一 5月 7 09:54:49 2012
Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved.
连接到目标数据库: ORCL (未装载)
RMAN> restore controlfile from 'D:\ORCL\AUTOBACKUP\2012_05_07\O1_MF_S_782611421_7TF86Z7O_.BKP';
启动 restore 于 07-5月 -12
使用目标数据库控制文件替代恢复目录
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: SID=134 设备类型=DISK
通道 ORA_DISK_1: 正在还原控制文件
通道 ORA_DISK_1: 还原完成, 用时: 00:00:01
输出文件名=D:\APP\ORACLE\CONTROL01.CTL
完成 restore 于 07-5月 -12
RMAN> restore database;
启动 restore 于 07-5月 -12
启动 implicit crosscheck backup 于 07-5月 -12
使用目标数据库控制文件替代恢复目录
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: SID=135 设备类型=DISK
已交叉检验的 16 对象
完成 implicit crosscheck backup 于 07-5月 -12
启动 implicit crosscheck copy 于 07-5月 -12
使用通道 ORA_DISK_1
已交叉检验的 4 对象
完成 implicit crosscheck copy 于 07-5月 -12
搜索恢复区中的所有文件
正在编制文件目录...
目录编制完毕
已列入目录的文件的列表
=======================
文件名: D:\ORCL\AUTOBACKUP\2012_05_07\O1_MF_S_782611421_7TF86Z7O_.BKP
文件名: D:\ORCL\AUTOBACKUP\2012_05_07\O1_MF_S_782645167_7TG95LYS_.BKP
使用通道 ORA_DISK_1
全部数据库备份将排除文件 4
全部数据库备份将排除文件 6
通道 ORA_DISK_1: 正在开始还原数据文件备份集
通道 ORA_DISK_1: 正在指定从备份集还原的数据文件
通道 ORA_DISK_1: 将数据文件 00001 还原到 D:\APP\ORACLE\ORADATA\ORCL\SYSTEM01.DBF
通道 ORA_DISK_1: 将数据文件 00002 还原到 D:\APP\ORACLE\ORADATA\ORCL\SYSAUX01.DBF
通道 ORA_DISK_1: 将数据文件 00003 还原到 D:\APP\ORACLE\ORADATA\ORCL\UNDOTBS01.DBF
通道 ORA_DISK_1: 将数据文件 00007 还原到 D:\APP\ORACLE\ORADATA\ORCL\DATA01.DBF
通道 ORA_DISK_1: 正在读取备份片段 D:\ORCL\BACKUPSET\2012_05_06\O1_MF_NNNDF_TAG20120506T232107_7TF5Q4RW_.BKP
通道 ORA_DISK_1: 段句柄 = D:\ORCL\BACKUPSET\2012_05_06\O1_MF_NNNDF_TAG20120506T232107_7TF5Q4RW_.BKP 标记 = TAG20120506T232107
通道 ORA_DISK_1: 已还原备份片段 1
通道 ORA_DISK_1: 还原完成, 用时: 00:00:45
故障转移到上一个备份
完成 restore 于 07-5月 -12
RMAN> restore datafile 4,6;
启动 restore 于 07-5月 -12
使用通道 ORA_DISK_1
通道 ORA_DISK_1: 正在开始还原数据文件备份集
通道 ORA_DISK_1: 正在指定从备份集还原的数据文件
通道 ORA_DISK_1: 将数据文件 00004 还原到 D:\APP\ORACLE\ORADATA\ORCL\USERS01.DBF
通道 ORA_DISK_1: 将数据文件 00006 还原到 D:\APP\ORACLE\USER01.DBF
通道 ORA_DISK_1: 正在读取备份片段 D:\ORCL\BACKUPSET\2012_05_07\O1_MF_NNNDF_TAG20120507T000338_7TF86TMS_.BKP
通道 ORA_DISK_1: 段句柄 = D:\ORCL\BACKUPSET\2012_05_07\O1_MF_NNNDF_TAG20120507T000338_7TF86TMS_.BKP 标记 = TAG20120507T000338
通道 ORA_DISK_1: 已还原备份片段 1
通道 ORA_DISK_1: 还原完成, 用时: 00:00:07
完成 restore 于 07-5月 -12
C:\Users\LIUBINGLIN>sqlplus / as sysdba
SQL*Plus: Release 11.2.0.1.0 Production on 星期一 5月 7 09:59:16 2012
Copyright (c) 1982, 2010, Oracle. All rights reserved.
连接到:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production
With the Partitioning, Oracle Label Security, OLAP, Data Mining,
Oracle Database Vault and Real Application Testing options
SQL> recover database using backup controlfile;
ORA-00279: 更改 2941118 (在 05/06/2012 23:21:07 生成) 对于线程 1 是必需的
ORA-00289: 建议: D:\ARC0000000002_0782498923.0001
ORA-00280: 更改 2941118 (用于线程 1) 在序列 #2 中
指定日志: {=suggested | filename | AUTO | CANCEL}
auto
ORA-00279: 更改 2941149 (在 05/06/2012 23:22:17 生成) 对于线程 1 是必需的
ORA-00289: 建议: D:\ARC0000000003_0782498923.0001
ORA-00280: 更改 2941149 (用于线程 1) 在序列 #3 中
ORA-00278: 此恢复不再需要日志文件 'D:\ARC0000000002_0782498923.0001'
ORA-00283: 恢复会话因错误而取消
ORA-01244: 未命名的数据文件由介质恢复添加至控制文件
ORA-01110: 数据文件 5: 'D:\APP\ORACLE\ORADATA\ORCL\XIAOYANG01.DBF'
ORA-01112: 未启动介质恢复
SQL> select name from v$datafile;
NAME
--------------------------------------------------------------------------------
D:\APP\ORACLE\ORADATA\ORCL\SYSTEM01.DBF
D:\APP\ORACLE\ORADATA\ORCL\SYSAUX01.DBF
D:\APP\ORACLE\ORADATA\ORCL\UNDOTBS01.DBF
D:\APP\ORACLE\ORADATA\ORCL\USERS01.DBF
D:\APP\ORACLE\DB_1\DATABASE\UNNAMED00005
D:\APP\ORACLE\USER01.DBF
D:\APP\ORACLE\ORADATA\ORCL\DATA01.DBF
已选择7行。
从上面的输出可以看出,由于控制文件过旧,在控制文件中没有XIAOYANG01.DBF数据文件的记录,在恢复过程中,Oracle新创建了一个UNNAMED00005的文件。
SQL> alter database create datafile 'D:\APP\ORACLE\DB_1\DATABASE\UNNAMED00005' as 'D:\APP\ORACLE\ORADATA\ORCL\XIAOYANG01.DBF';
数据库已更改。
将UNNAMED00005重定义成XIAOYANG01.DBF,如果使用RMAN,这个过程是由RMAN自动完成的,再次印证RMAN是个智能的工具。
SQL> recover database using backup controlfile;
ORA-00279: 更改 2956363 (在 05/07/2012 08:46:16 生成) 对于线程 1 是必需的
ORA-00289: 建议: D:\ARC0000000003_0782498923.0001
ORA-00280: 更改 2956363 (用于线程 1) 在序列 #3 中
指定日志: {=suggested | filename | AUTO | CANCEL}
auto
已应用的日志。
完成介质恢复。
SQL> alter database open resetlogs;
数据库已更改。
SQL> select file_name from dba_data_files;
FILE_NAME
--------------------------------------------------------------------------------
D:\APP\ORACLE\USER01.DBF
D:\APP\ORACLE\ORADATA\ORCL\USERS01.DBF
D:\APP\ORACLE\ORADATA\ORCL\UNDOTBS01.DBF
D:\APP\ORACLE\ORADATA\ORCL\SYSAUX01.DBF
D:\APP\ORACLE\ORADATA\ORCL\SYSTEM01.DBF
D:\APP\ORACLE\ORADATA\ORCL\XIAOYANG01.DBF
D:\APP\ORACLE\ORADATA\ORCL\DATA01.DBF
已选择7行。
5.使用RMAN工具测试:最新控制文件,丢失新表空间数据文件,无新表空间备份,归档Redo日志都存在的恢复。
C:\Users\LIUBINGLIN>sqlplus / as sysdba
SQL*Plus: Release 11.2.0.1.0 Production on 星期一 5月 7 11:07:36 2012
Copyright (c) 1982, 2010, Oracle. All rights reserved.
连接到:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production
With the Partitioning, Oracle Label Security, OLAP, Data Mining,
Oracle Database Vault and Real Application Testing options
SQL> select status from v$instance;
STATUS
------------
OPEN
SQL> shutdown immediate
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
//手动将XIAOYANG01.DBF重命名为XIAOYANG01_.DBF。
SQL> startup
ORACLE 例程已经启动。
Total System Global Area 535662592 bytes
Fixed Size 1375792 bytes
Variable Size 255853008 bytes
Database Buffers 272629760 bytes
Redo Buffers 5804032 bytes
数据库装载完毕。
ORA-01157: 无法标识/锁定数据文件 5 - 请参阅 DBWR 跟踪文件
ORA-01110: 数据文件 5: 'D:\APP\ORACLE\ORADATA\ORCL\XIAOYANG01.DBF'
C:\Users\LIUBINGLIN>rman target /
恢复管理器: Release 11.2.0.1.0 - Production on 星期一 5月 7 11:12:46 2012
Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved.
已连接到目标数据库: ORCL (DBID=1290386656, 未打开)
RMAN> recover datafile 5;
启动 recover 于 07-5月 -12
使用目标数据库控制文件替代恢复目录
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: SID=133 设备类型=DISK
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: recover 命令 (在 05/07/2012 11:12:59 上) 失败
RMAN-06094: 数据文件5必须重新存储
RMAN> recover database;
启动 recover 于 07-5月 -12
使用通道 ORA_DISK_1
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: recover 命令 (在 05/07/2012 11:13:14 上) 失败
RMAN-06094: 数据文件5必须重新存储
RMAN> restore datafile 5;
启动 restore 于 07-5月 -12
使用通道 ORA_DISK_1
创建数据文件, 文件号 = 5 名称 = D:\APP\ORACLE\ORADATA\ORCL\XIAOYANG01.DBF
没有完成还原; 所有文件均为只读或脱机文件或者已经还原
完成 restore 于 07-5月 -12
RMAN> recover datafile 5;
启动 recover 于 07-5月 -12
使用通道 ORA_DISK_1
正在开始介质的恢复
归档日志文件名=D:\ARC0000000003_0782498923.0001 线程=1 序列=3
介质恢复完成, 用时: 00:00:00
完成 recover 于 07-5月 -12
RMAN> alter database open;
数据库已打开
由此看出,虽然没有xiaoyang表空间的备份,但使用RMAN的restore命令,依然可根据控制文件中的信息记录自动创建数据文件,之后执行recover命令即可。
6.使用SQLPLUS工具测试:最新控制文件,丢失新表空间数据文件,无新表空间备份,归档Redo日志都存在的恢复。
SQL> shutdown immediate
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
//手动将XIAOYANG01.DBF重命名为XIAOYANG01_.DBF。
SQL> startup
ORACLE 例程已经启动。
Total System Global Area 535662592 bytes
Fixed Size 1375792 bytes
Variable Size 255853008 bytes
Database Buffers 272629760 bytes
Redo Buffers 5804032 bytes
数据库装载完毕。
ORA-01157: 无法标识/锁定数据文件 5 - 请参阅 DBWR 跟踪文件
ORA-01110: 数据文件 5: 'D:\APP\ORACLE\ORADATA\ORCL\XIAOYANG01.DBF'
SQL> recover datafile 5;
ORA-00283: 恢复会话因错误而取消
ORA-01110: 数据文件 5: 'D:\APP\ORACLE\ORADATA\ORCL\XIAOYANG01.DBF'
ORA-01157: 无法标识/锁定数据文件 5 - 请参阅 DBWR 跟踪文件
ORA-01110: 数据文件 5: 'D:\APP\ORACLE\ORADATA\ORCL\XIAOYANG01.DBF'
SQL> alter database create datafile 'D:\APP\ORACLE\ORADATA\ORCL\XIAOYANG01.DBF';
数据库已更改。
SQL> recover datafile 5;
ORA-00279: 更改 2956363 (在 05/07/2012 08:46:16 生成) 对于线程 1 是必需的
ORA-00289: 建议: D:\ARC0000000003_0782498923.0001
ORA-00280: 更改 2956363 (用于线程 1) 在序列 #3 中
指定日志: {=suggested | filename | AUTO | CANCEL}
auto
已应用的日志。
完成介质恢复。
SQL> alter database open;
数据库已更改。
参考文章:http://www.eygle.com/archives/2004/10/recover_backup_missing_datafile.html
http://www.eygle.com/archives/2004/10/recover_without_datafile_backup.html
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/23135684/viewspace-722877/
,如需转载,请注明出处,否则将追究法律责任。