当前控制文件中没 test tablespace的信息了~应该用备份控制文件恢复or重新建立控制文件
(下面先使用current controlfile)
SQL> select name from v$datafile;
NAME
--------------------------------------------------------------------------------
E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSTEM01.DBF
E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\UNDOTBS01.DBF
E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSAUX01.DBF
E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\USERS01.DBF
E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\EXAMPLE01.DBF
E:\SYSDATAFILE2.DBF
已选择6行。
SQL> create tablespace test datafile 'd:\test.dbf' reuse;
表空间已创建。
SQL> select name from v$datafile;
NAME
--------------------------------------------------------------------------------
E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSTEM01.DBF
E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\UNDOTBS01.DBF
E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSAUX01.DBF
E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\USERS01.DBF
E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\EXAMPLE01.DBF
D:\TEST.DBF
E:\SYSDATAFILE2.DBF
已选择7行。
RMAN> backup database;
启动 backup 于 2009-09-14 17:49:16
完成 backup 于 2009-09-14 17:50:17
RMAN> list backup of tablespace 'TEST';
备份集列表
===================
BS 关键字 类型 LV 大小 设备类型 经过时间 完成时间
------- ---- -- ---------- ----------- ------------ -------------------
90 Full 644.78M DISK 00:00:51 2009-09-14 17:50:07
BP 关键字: 150 状态: AVAILABLE 已压缩: NO 标记: TAG20090914T174916
段名:E:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\ORCL\BACKUPSET\2009_09_14\O1_MF_N
NNDF_TAG20090914T174916_5BW4DXN0_.BKP
备份集 90 中的数据文件列表
文件 LV 类型 Ckp SCN Ckp 时间 名称
---- -- ---- ---------- ------------------- ----
6 Full 1628096 2009-09-14 17:49:17 D:\TEST.DBF
SQL> select current_scn from v$database;
CURRENT_SCN
-----------
1628151
SQL> drop tablespace test including contents and datafiles;
表空间已删除。
RMAN> list backup of tablespace 'TEST';
RMAN-03002: list 命令 (在 09/14/2009 17:52:14 上) 失败
RMAN-20202: 在恢复目录中未找到表空间
RMAN-06019: 无法转换表空间名称"TEST"~~~~~~~~~~~~~~~~~~~~~~~~~~~~因为使用的controlfile当恢复目录 所以 没有TEST TABLESPACE的信息了
SQL> select name from v$datafile;
NAME
--------------------------------------------------------------------------------
E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSTEM01.DBF
E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\UNDOTBS01.DBF
E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSAUX01.DBF
E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\USERS01.DBF
E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\EXAMPLE01.DBF
E:\SYSDATAFILE2.DBF
已选择6行。
RMAN> run{startup force mount;
2> set until scn=1628151;
3> restore database;
4> }
Oracle 实例已启动
数据库已装载
系统全局区域总计 612368384 字节
Fixed Size 1250428 字节
Variable Size 239078276 字节
Database Buffers 364904448 字节
Redo Buffers 7135232 字节
正在执行命令: SET until clause
启动 restore 于 2009-09-14 17:56:10
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: sid=158 devtype=DISK
通道 ORA_DISK_1: 正在开始恢复数据文件备份集
通道 ORA_DISK_1: 正在指定从备份集恢复的数据文件
正将数据文件00001恢复到E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSTEM01.DBF
正将数据文件00002恢复到E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\UNDOTBS01.DBF
正将数据文件00003恢复到E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSAUX01.DBF
正将数据文件00004恢复到E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\USERS01.DBF
正将数据文件00005恢复到E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\EXAMPLE01.DBF
正将数据文件00009恢复到E:\SYSDATAFILE2.DBF
通道 ORA_DISK_1: 正在读取备份段 E:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\ORCL\B
ACKUPSET\2009_09_14\O1_MF_NNNDF_TAG20090914T174916_5BW4DXN0_.BKP
通道 ORA_DISK_1: 已恢复备份段 1
段句柄 = E:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\ORCL\BACKUPSET\2009_09_14\O1_
MF_NNNDF_TAG20090914T174916_5BW4DXN0_.BKP 标记 = TAG20090914T174916
通道 ORA_DISK_1: 恢复完成, 用时: 00:00:55
完成 restore 于 2009-09-14 17:57:10
SQL> select name from v$datafile;
NAME
--------------------------------------------------------------------------------
E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSTEM01.DBF
E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\UNDOTBS01.DBF
E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSAUX01.DBF
E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\USERS01.DBF
E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\EXAMPLE01.DBF
E:\SYSDATAFILE2.DBF
已选择6行。
RMAN> run{set until scn=1628151;
2> recover database;
3> }
正在执行命令: SET until clause
启动 recover 于 2009-09-14 17:59:41
使用通道 ORA_DISK_1
正在开始介质的恢复
介质恢复完成, 用时: 00:00:09
完成 recover 于 2009-09-14 17:59:58
SQL> select name from v$datafile;
NAME
--------------------------------------------------------------------------------
E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSTEM01.DBF
E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\UNDOTBS01.DBF
E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSAUX01.DBF
E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\USERS01.DBF
E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\EXAMPLE01.DBF
E:\SYSDATAFILE2.DBF
已选择6行。
RMAN> alter database open resetlogs;
数据库已打开
SQL> select name from v$datafile;
NAME
--------------------------------------------------------------------------------
E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSTEM01.DBF
E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\UNDOTBS01.DBF
E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSAUX01.DBF
E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\USERS01.DBF
E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\EXAMPLE01.DBF
E:\ORACLE\PRODUCT\10.2.0\DB_1\DATABASE\MISSING00006~~~~~~~~~~~~~~~~~~~~~~~~~~~
E:\SYSDATAFILE2.DBF
已选择7行。
SQL> col tablespace_name format a10
SQL> col file_name format a50
SQL> select tablespace_name,file_name from dba_data_files;
TABLESPACE FILE_NAME
---------- --------------------------------------------------
TEST E:\ORACLE\PRODUCT\10.2.0\DB_1\DATABASE\MISSING0000~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
6
EXAMPLE E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\EXAMPLE01.DB
F
USERS E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\USERS01.DBF
SYSAUX E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSAUX01.DBF
UNDOTBS1 E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\UNDOTBS01.DB
F
TABLESPACE FILE_NAME
---------- --------------------------------------------------
SYSTEM E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSTEM01.DBF
SYSTEM E:\SYSDATAFILE2.DBF
已选择7行。
SQL> alter database rename file 'E:\ORACLE\PRODUCT\10.2.0\DB_1\DATABASE\MISSING0000
6' to 'd:\test.dbf';
alter database rename file 'E:\ORACLE\PRODUCT\10.2.0\DB_1\DATABASE\MISSING00006' to
'd:\test.dbf'
*
第 1 行出现错误:
ORA-01511: 重命名日志/数据文件时出错
ORA-01141: 重命名数据文件 6 时出错 - 未找到新文件 'd:\test.dbf'
ORA-01111: 数据文件 6 名称未知 - 请重命名以更正文件
ORA-01110: 数据文件 6: 'E:\ORACLE\PRODUCT\10.2.0\DB_1\DATABASE\MISSING00006'
ORA-27041: 无法打开文件
OSD-04002: 无法打开文件
O/S-Error: (OS 2) 系统找不到指定的文件。
已经无法恢复
看alert.log中记载
Dictionary check beginning
Tablespace 'TEST' #7 found in data dictionary,~~~~~~~~~~~~~~~~~~~~~~~~~
but not in the controlfile. Adding to controlfile.
File #6 found in data dictionary but not in controlfile.~~~~~~~~~~~~~~~~~~~~~~~~~~~
Creating OFFLINE file 'MISSING00006' in the controlfile.
This file can no longer be recovered so it must be dropped.~~~~~~~~~~~~~~~~~~~~~~~~~~~~~必须drop了
Dictionary check complete
~~~~~~~~~~~~~~~~~~手动实验下
SQL> create tablespace test datafile 'd:\test.dbf' size 10m;
表空间已创建。
SQL> select tablespace_name,file_name from dba_data_files;
TABLESPACE FILE_NAME
---------- --------------------------------------------------
EXAMPLE E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\EXAMPLE01.DB
F
USERS E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\USERS01.DBF
SYSAUX E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSAUX01.DBF
UNDOTBS1 E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\UNDOTBS01.DB
F
SYSTEM E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSTEM01.DBF
TEST D:\TEST.DBF
SYSTEM E:\SYSDATAFILE2.DBF
已选择7行。
SQL> select name from v$datafile;
NAME
------------------------------
E:\ORACLE\PRODUCT\10.2.0\ORADA
TA\ORCL\SYSTEM01.DBF
E:\ORACLE\PRODUCT\10.2.0\ORADA
TA\ORCL\UNDOTBS01.DBF
E:\ORACLE\PRODUCT\10.2.0\ORADA
TA\ORCL\SYSAUX01.DBF
E:\ORACLE\PRODUCT\10.2.0\ORADA
TA\ORCL\USERS01.DBF
NAME
------------------------------
E:\ORACLE\PRODUCT\10.2.0\ORADA
TA\ORCL\EXAMPLE01.DBF
D:\TEST.DBF
E:\SYSDATAFILE2.DBF
已选择7行。
SQL> alter database begin backup;
数据库已更改。
SQL> @d:\backup\backupscript.txt
已复制 1 个文件。
已复制 1 个文件。
已复制 1 个文件。
已复制 1 个文件。
已复制 1 个文件。
已复制 1 个文件。
已复制 1 个文件。
SQL> alter database end backup;
数据库已更改。
SQL> select current_scn from v$database;
CURRENT_SCN
-----------
1653723
SQL> drop tablespace test including contents and datafiles;
表空间已删除。
SQL> startup force mount;
ORA-32004: obsolete and/or deprecated parameter(s) specified
ORACLE 例程已经启动。
Total System Global Area 612368384 bytes
Fixed Size 1250428 bytes
Variable Size 255855492 bytes
Database Buffers 348127232 bytes
Redo Buffers 7135232 bytes
数据库装载完毕。
SQL> @d:\restore\restoredbf.txt
已复制 1 个文件。
已复制 1 个文件。
已复制 1 个文件。
已复制 1 个文件。
已复制 1 个文件。
已复制 1 个文件。
已复制 1 个文件。
SQL> recover database until change 1653723;
完成介质恢复。
SQL>
SQL> select name from v$datafile;
NAME
------------------------------
E:\ORACLE\PRODUCT\10.2.0\ORADA
TA\ORCL\SYSTEM01.DBF
E:\ORACLE\PRODUCT\10.2.0\ORADA
TA\ORCL\UNDOTBS01.DBF
E:\ORACLE\PRODUCT\10.2.0\ORADA
TA\ORCL\SYSAUX01.DBF
E:\ORACLE\PRODUCT\10.2.0\ORADA
TA\ORCL\USERS01.DBF
NAME
------------------------------
E:\ORACLE\PRODUCT\10.2.0\ORADA
TA\ORCL\EXAMPLE01.DBF
E:\SYSDATAFILE2.DBF
已选择6行。
SQL> alter database open resetlogs;
数据库已更改。
SQL> select tablespace_name,file_name from dba_data_files;
TABLESPACE FILE_NAME
---------- --------------------------------------------------
EXAMPLE E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\EXAMPLE01.DB
F
USERS E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\USERS01.DBF
SYSAUX E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSAUX01.DBF
UNDOTBS1 E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\UNDOTBS01.DB
F
SYSTEM E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSTEM01.DBF
TEST E:\ORACLE\PRODUCT\10.2.0\DB_1\DATABASE\MISSING0000******************
6
TABLESPACE FILE_NAME
---------- --------------------------------------------------
SYSTEM E:\SYSDATAFILE2.DBF
已选择7行。
SQL> alter database rename file 'E:\ORACLE\PRODUCT\10.2.0\DB_1\DATABASE\MISSING0000
6' to 'd:\test.dbf';
数据库已更改。
SQL> create table t1 (a int) tablespace test;
create table t1 (a int) tablespace test
*
第 1 行出现错误:
ORA-01658: 无法为表空间 TEST 中的段创建 INITIAL 区
SQL> alter database datafile 6 online;
alter database datafile 6 online
*
第 1 行出现错误:
ORA-01190: 控制文件或数据文件 6 来自最后一个 RESETLOGS 之前
ORA-01110: 数据文件 6: 'D:\TEST.DBF'
可以看到从备份用脚本restore回来后~~没有执行恢复还是备份时候的文件
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~通过一遍手动的实验 可以看到因为controlfile中没有test.dbf的信息了~~所以应用redo时候表空间虽然恢复了,但数据文件没恢复
下面用备份controlfile恢复 (RMAN)
SQL> create tablespace test datafile 'd:\test.dbf' size 10m;
表空间已创建。
SQL> select tablespace_name,file_name from dba_data_files;
TABLESPACE FILE_NAME
---------- --------------------------------------------------
TEST D:\TEST.DBF
EXAMPLE E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\EXAMPLE01.DB
F
USERS E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\USERS01.DBF
SYSAUX E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSAUX01.DBF
UNDOTBS1 E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\UNDOTBS01.DB
F
SYSTEM E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSTEM01.DBF
SYSTEM E:\SYSDATAFILE2.DBF
已选择7行。
SQL> select name from v$datafile;
NAME
------------------------------
E:\ORACLE\PRODUCT\10.2.0\ORADA
TA\ORCL\SYSTEM01.DBF
E:\ORACLE\PRODUCT\10.2.0\ORADA
TA\ORCL\UNDOTBS01.DBF
E:\ORACLE\PRODUCT\10.2.0\ORADA
TA\ORCL\SYSAUX01.DBF
E:\ORACLE\PRODUCT\10.2.0\ORADA
TA\ORCL\USERS01.DBF
NAME
------------------------------
E:\ORACLE\PRODUCT\10.2.0\ORADA
TA\ORCL\EXAMPLE01.DBF
D:\TEST.DBF
E:\SYSDATAFILE2.DBF
已选择7行。
RMAN> backup database;
完成 backup 于 15-9月 -09
RMAN> list backup of controlfile;
备份集列表
===================
BS 关键字 类型 LV 大小 设备类型 经过时间 完成时间
------- ---- -- ---------- ----------- ------------ ----------
95 Full 7.17M DISK 00:00:03 15-9月 -09
BP 关键字: 155 状态: AVAILABLE 已压缩: NO 标记: TAG20090915T111041
段名:E:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\ORCL\BACKUPSET\2009_09_15\O1_MF_N
CSNF_TAG20090915T111041_5BY1HCDP_.BKP
包括的控制文件: Ckp SCN: 1656570 Ckp 时间: 15-9月 -09
SQL> select current_scn from v$database;
CURRENT_SCN
-----------
1656664
SQL> drop tablespace test including contents and datafiles;
RMAN> run{startup force mount;
2> set until scn=1656664;~~~~设置恢复到哪
3> restore controlfile from 'E:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\ORCL\BACK~~~~~~~~~~~~~~~~~~~~~restore备份的控制文件
UPSET\2009_09_15\O1_MF_NCSNF_TAG20090915T111041_5BY1HCDP_.BKP';
4> restore database;
5> recover database;
6> alter database open resetlogs;}
Oracle 实例已启动
系统全局区域总计 612368384 字节
Fixed Size 1250428 字节
Variable Size 239078276 字节
Database Buffers 364904448 字节
Redo Buffers 7135232 字节
启动 restore 于 15-9月 -09
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: sid=158 devtype=DISK
通道 ORA_DISK_1: 正在复原控制文件
通道 ORA_DISK_1: 恢复完成, 用时: 00:00:05
输出文件名=E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\CONTROL01.CTL
输出文件名=E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\CONTROL02.CTL
输出文件名=E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\CONTROL03.CTL
完成 restore 于 15-9月 -09
数据库已装载
释放的通道: ORA_DISK_1
正在执行命令: SET until clause
启动 restore 于 15-9月 -09
启动 implicit crosscheck backup 于 15-9月 -09
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: sid=158 devtype=DISK
已交叉检验的 1 对象
完成 implicit crosscheck backup 于 15-9月 -09
启动 implicit crosscheck copy 于 15-9月 -09
使用通道 ORA_DISK_1
已交叉检验的 15 对象
完成 implicit crosscheck copy 于 15-9月 -09
搜索恢复区域中的所有文件
正在编制文件目录...
目录编制完毕
已列入目录的文件的列表
=======================
文件名: E:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\ORCL\BACKUPSET\2009_09_15\O1_M
F_NCSNF_TAG20090915T111041_5BY1HCDP_.BKP
使用通道 ORA_DISK_1
通道 ORA_DISK_1: 正在开始恢复数据文件备份集
通道 ORA_DISK_1: 正在指定从备份集恢复的数据文件
正将数据文件00001恢复到E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSTEM01.DBF
正将数据文件00002恢复到E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\UNDOTBS01.DBF
正将数据文件00003恢复到E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSAUX01.DBF
正将数据文件00004恢复到E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\USERS01.DBF
正将数据文件00005恢复到E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\EXAMPLE01.DBF
正将数据文件00006恢复到D:\TEST.DBF~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~RESTORE回来了
正将数据文件00009恢复到E:\SYSDATAFILE2.DBF
通道 ORA_DISK_1: 正在读取备份段 E:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\ORCL\B
ACKUPSET\2009_09_15\O1_MF_NNNDF_TAG20090915T111041_5BY1FLM1_.BKP
通道 ORA_DISK_1: 已恢复备份段 1
段句柄 = E:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\ORCL\BACKUPSET\2009_09_15\O1_
MF_NNNDF_TAG20090915T111041_5BY1FLM1_.BKP 标记 = TAG20090915T111041
通道 ORA_DISK_1: 恢复完成, 用时: 00:00:55
完成 restore 于 15-9月 -09
启动 recover 于 15-9月 -09
使用通道 ORA_DISK_1
正在开始介质的恢复
存档日志线程 1 序列 1 已作为文件 E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO01.LOG
存在于磁盘上
存档日志文件名 =E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO01.LOG 线程 =1 序列 =1
介质恢复完成, 用时: 00:00:03
完成 recover 于 15-9月 -09
数据库已打开
SQL> select name from v$datafile;
NAME
--------------------------------------------------------------------------------
E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSTEM01.DBF
E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\UNDOTBS01.DBF
E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSAUX01.DBF
E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\USERS01.DBF
E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\EXAMPLE01.DBF
D:\TEST.DBF
E:\SYSDATAFILE2.DBF
已选择7行。
SQL> select tablespace_name,file_name from dba_data_files;
TABLESPACE_NAME
------------------------------
FILE_NAME
--------------------------------------------------------------------------------
TEST
D:\TEST.DBF
EXAMPLE
E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\EXAMPLE01.DBF
USERS
E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\USERS01.DBF
TABLESPACE_NAME
------------------------------
FILE_NAME
--------------------------------------------------------------------------------
SYSAUX
E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSAUX01.DBF
UNDOTBS1
E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\UNDOTBS01.DBF
SYSTEM
E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSTEM01.DBF
TABLESPACE_NAME
------------------------------
FILE_NAME
--------------------------------------------------------------------------------
SYSTEM
E:\SYSDATAFILE2.DBF
已选择7行。
SQL> create table t1 (a int) tablespace test;
表已创建。
SQL> insert into t1 values(1);~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~已经恢复ok
已创建 1 行。
问题2 如果只有rman备份时候且没有备份控制文件,如何恢复~~~restoRE时候不会转储回 TEST.DBF
SQL> create tablespace test datafile 'd:\test.dbf' reuse;
表空间已创建。
SQL> select tablespace_name,file_name from dba_data_files;
TABLESPACE FILE_NAME
---------- --------------------------------------------------
TEST D:\TEST.DBF
EXAMPLE E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\EXAMPLE01.DB
F
USERS E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\USERS01.DBF
SYSAUX E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSAUX01.DBF
UNDOTBS1 E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\UNDOTBS01.DB
F
SYSTEM E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSTEM01.DBF
SYSTEM E:\SYSDATAFILE2.DBF
已选择7行。
SQL> select name from v$datafile;
NAME
--------------------------------------------------------------------------------
E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSTEM01.DBF
E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\UNDOTBS01.DBF
E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSAUX01.DBF
E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\USERS01.DBF
E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\EXAMPLE01.DBF
D:\TEST.DBF
E:\SYSDATAFILE2.DBF
已选择7行。
RMAN> backup database;
完成 backup 于 15-9月 -09
SQL> select current_scn from v$database;
CURRENT_SCN
-----------
1657559
SQL> drop tablespace test including contents and datafiles;
表空间已删除。
RMAN> run{startup force mount;
2> set until scn=1657559;
3> restore database;}
RMAN> run{startup force mount;
2> set until scn=1657559;
3> restore database;}
Oracle 实例已启动
数据库已装载
系统全局区域总计 612368384 字节
Fixed Size 1250428 字节
Variable Size 243272580 字节
Database Buffers 360710144 字节
Redo Buffers 7135232 字节
正在执行命令: SET until clause
启动 restore 于 15-9月 -09
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: sid=157 devtype=DISK
通道 ORA_DISK_1: 正在开始恢复数据文件备份集
通道 ORA_DISK_1: 正在指定从备份集恢复的数据文件
正将数据文件00001恢复到E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSTEM01.DBF
正将数据文件00002恢复到E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\UNDOTBS01.DBF
正将数据文件00003恢复到E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSAUX01.DBF
正将数据文件00004恢复到E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\USERS01.DBF~~~~~~~~~~~~~~~看到没有restore test.dbf
正将数据文件00005恢复到E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\EXAMPLE01.DBF
正将数据文件00009恢复到E:\SYSDATAFILE2.DBF
通道 ORA_DISK_1: 正在读取备份段 E:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\ORCL\B
ACKUPSET\2009_09_15\O1_MF_NNNDF_TAG20090915T112736_5BY2F9L2_.BKP
通道 ORA_DISK_1: 恢复完成, 用时: 00:00:55
完成 restore 于 15-9月 -09
~~~~~~~~~~~~~~~~手工从buckup set中提取 test.dbf的备份
1 DECLARE
2 devtype varchar2(256);
3 done boolean;
4 BEGIN
5 devtype:=sys.dbms_backup_restore.deviceAllocate (type=>'',ident=>'a');
6 sys.dbms_backup_restore.restoreSetDatafile;
7 sys.dbms_backup_restore.restoreDatafileTo(dfnumber=>06,toname=>'d:\test.dbf')
;
8 sys.dbms_backup_restore.restoreBackupPiece(done=>done,handle=>'E:\ORACLE\PROD
UCT\10.2.0\FLASH_RECOVERY_AREA\ORCL\BACKUPSET\2009_09_15\O1_MF_NNNDF_TAG20090915T11
2736_5BY2F9L2_.BKP', params=>null);
9 sys.dbms_backup_restore.deviceDeallocate;
10* END;
SQL> /
PL/SQL 过程已成功完成。
SQL> select name from v$datafile;~~~~~~~~~~~~~控制文件中没记录
NAME
--------------------------------------------------------------------------------
E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSTEM01.DBF
E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\UNDOTBS01.DBF
E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSAUX01.DBF
E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\USERS01.DBF
E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\EXAMPLE01.DBF
E:\SYSDATAFILE2.DBF
已选择6行。
SQL> select name from v$tablespace;
NAME
------------------------------
SYSTEM
UNDOTBS1
SYSAUX
USERS~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~没有test tablespace
EXAMPLE
TEMP
已选择6行。
SQL> alter database backup controlfile to trace;
数据库已更改。
SQL> startup force nomount;
ORA-32004: obsolete and/or deprecated parameter(s) specified
ORACLE 例程已经启动。
Total System Global Area 612368384 bytes
Fixed Size 1250428 bytes
Variable Size 243272580 bytes
Database Buffers 360710144 bytes
Redo Buffers 7135232 bytes
SQL>
~~~~~~~~~重新建立控制文件
SQL> CREATE CONTROLFILE REUSE DATABASE "ORCL" NORESETLOGS ARCHIVELOG
2 MAXLOGFILES 16
3 MAXLOGMEMBERS 3
4 MAXDATAFILES 100
5 MAXINSTANCES 8
6 MAXLOGHISTORY 292
7 LOGFILE
8 GROUP 1 'E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO01.LOG' SIZE 50M,
9 GROUP 2 'E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO02.LOG' SIZE 50M,
10 GROUP 3 'E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO03.LOG' SIZE 50M
11 -- STANDBY LOGFILE
12 DATAFILE
13 'E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSTEM01.DBF',
14 'E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\UNDOTBS01.DBF',
15 'E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSAUX01.DBF',
16 'E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\USERS01.DBF',
17 'E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\EXAMPLE01.DBF',
18 'E:\SYSDATAFILE2.DBF',
19 'd:\test.dbf'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~手动加进来
20 CHARACTER SET ZHS16GBK
21 ;
控制文件已创建。
已选择6行。
SQL> select name from v$tablespace;
NAME
------------------------------
SYSTEM
UNDOTBS1
SYSAUX
USERS
EXAMPLE
TEST
已选择6行。
SQL> recover database until change 1657559;
完成介质恢复。
SQL> select name from v$tablespace;
NAME
------------------------------
SYSTEM
UNDOTBS1
SYSAUX
USERS
EXAMPLE
TEST
已选择6行。
SQL> select name from v$datafile;
NAME
--------------------------------------------------------------------------------
E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSTEM01.DBF
E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\UNDOTBS01.DBF
E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSAUX01.DBF
E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\USERS01.DBF
E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\EXAMPLE01.DBF
D:\TEST.DBF
E:\SYSDATAFILE2.DBF
已选择7行。
SQL> alter database open resetlogs;
SQL> col tablespace_name format a10
SQL> col file_name format a40
SQL> select tablespace_name,file_name from dba_data_files;
TABLESPACE FILE_NAME
---------- ----------------------------------------
TEST D:\TEST.DBF~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
SYSTEM E:\SYSDATAFILE2.DBF
EXAMPLE E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\EX
AMPLE01.DBF
USERS E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\US
ERS01.DBF
SYSAUX E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SY
SAUX01.DBF
TABLESPACE FILE_NAME
---------- ----------------------------------------
UNDOTBS1 E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\UN
DOTBS01.DBF
SYSTEM E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SY
STEM01.DBF
已选择7行。
SQL>
SQL> create table t1 (a int) tablespace test;
表已创建。
SQL> insert into t1 values(1);
已创建 1 行。
手动恢复的话 用热备份 restore回去,然后 create controlfile(加入删除的datafile信息) 恢复即可
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/12020513/viewspace-614667/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/12020513/viewspace-614667/