这真是原创的 呵
表空间USER0716为READ ONLY的表空间
SQL> drop tablespace user0716;
表空间已删除。
SQL> recover tablespace user0716;
ORA-00959: 表空间 'USER0716' 不存在
SQL> recover database;
ORA-00283: 恢复会话因错误而取消
ORA-01124: 无法恢复数据文件 1 - 文件在使用中或在恢复中
ORA-01110: 数据文件 1: 'F:\ORACLE\PRODUCT\10.2.0\ORADATA\MYORACLE\SYSTEM01.DBF'
因为数据库是在open状态
SQL> shutdown immediate;
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> startup mount
ORACLE 例程已经启动。
Total System Global Area
Fixed Size
Variable Size
Database Buffers
Redo Buffers
数据库装载完毕。
SQL> recover database;
ORA-00283: 恢复会话因错误而取消
ORA-00264: 不要求恢复
--因为没有什么不一致,恢复个啥!!!自己drop掉的
打算使用rman基于时间的恢复
脚本:
run{
}
'2011-07-29 10:40:00' 这个时间还没有drop表空间
注: 最近一次rman全备是在2011-07-29 00:09:00, 是在一次不完全恢复使用resetlogs open方式打开后备份的
C:\Documents and Settings\Administrator>rman target /
恢复管理器: Release 10.2.0.1.0 - Production on 星期五 7月 29 13:22:47 2011
Copyright (c) 1982, 2005, Oracle.
已连接到目标数据库: MYORACLE (DBID=1854006956, 未打开)
RMAN> run{
2>
3>
4>
5>
6>
7> }
使用目标数据库控制文件替代恢复目录
分配的通道: ch1
通道 ch1: sid=155 devtype=DISK
正在执行命令: SET until clause
启动 restore 于 29-7月 -11
通道 ch1: 正在开始恢复数据文件备份集
通道 ch1: 正在指定从备份集恢复的数据文件
正将数据文件00001恢复到F:\ORACLE\PRODUCT\10.2.0\ORADATA\MYORACLE\SYSTEM01.DBF
正将数据文件00002恢复到F:\ORACLE\PRODUCT\10.2.0\ORADATA\MYORACLE\UNDOTBS01.DBF
正将数据文件00003恢复到F:\ORACLE\PRODUCT\10.2.0\ORADATA\MYORACLE\SYSAUX01.DBF
正将数据文件00004恢复到F:\ORACLE\PRODUCT\10.2.0\ORADATA\MYORACLE\USERS01.DBF
正将数据文件00005恢复到F:\ORACLE\PRODUCT\10.2.0\ORADATA\MYORACLE\EXAMPLE01.DBF
通道 ch1: 正在读取备份段 F:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\MYORACLE\B
ACKUPSET\2011_07_29\O1_MF_NNNDF_TAG20110729T000748_7332BRB8_.BKP
通道 ch1: 已恢复备份段 1
段句柄 = F:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\MYORACLE\BACKUPSET\2011_07
_29\O1_MF_NNNDF_TAG20110729T000748_7332BRB8_.BKP 标记 = TAG20110729T000748
通道 ch1: 恢复完成, 用时: 00:01:46
完成 restore 于 29-7月 -11
启动 recover 于 29-7月 -11
正在开始介质的恢复
介质恢复完成, 用时: 00:00:10
完成 recover 于 29-7月 -11
释放的通道: ch1
SQL> startup mount;
ORACLE 例程已经启动。
Total System Global Area
Fixed Size
Variable Size
Database Buffers
Redo Buffers
数据库装载完毕。
SQL> alter database open;
alter database open
*
第 1 行出现错误:
ORA-01589: 要打开数据库则必须使用 RESETLOGS 或 NORESETLOGS 选项
SQL> alter database open resetlogs;
数据库已更改。
--查一下dba_data_files发现属于user0716只读表空间的数据文件是offline状态
SQL> alter database datafile 6 online;
alter database datafile 6 online
*
第 1 行出现错误:
ORA-01157: 无法标识/锁定数据文件 6 - 请参阅 DBWR 跟踪文件
ORA-01111: 数据文件 6 名称未知 - 请重命名以更正文件
ORA-01110: 数据文件 6: 'F:\ORACLE\PRODUCT\10.2.0\DB_1\DATABASE\MISSING00006'
SQL> alter database rename file 'F:\ORACLE\PRODUCT\10.2.0\DB_1\DATABASE\MISSING0
0006' to 'F:\oracle\product\10.2.0\oradata\myoracle\MYORACLE\DATAFILE\O1_MF_USER
0716_723C8OXS_.DBF';
数据库已更改。
SQL> alter database datafile 6 online;
alter database datafile 6 online
*
第 1 行出现错误:
ORA-01190: 控制文件或数据文件 6 来自最后一个 RESETLOGS 之前
ORA-01110: 数据文件 6:
'F:\ORACLE\PRODUCT\10.2.0\ORADATA\MYORACLE\MYORACLE\DATAFILE\O1_MF_USER0716_723C
8OXS_.DBF'
查资料:
Cause: Attempting to use a data file when the log reset information in the file does not match the control file. Either the data file or the control file is a backup that was made before the most recent ALTER DATABASE OPEN RESETLOGS.
Action: Restore file from a more recent backup.
SQL> recover datafile 6;
ORA-00283: 恢复会话因错误而取消
ORA-00264: 不要求恢复
??不要求恢复? 那应该是一致的呀 为什么报ora-01190的错误!?
SQL> alter database datafile 6 online;
alter database datafile 6 online
*
第 1 行出现错误:
ORA-01190: 控制文件或数据文件 6 来自最后一个 RESETLOGS 之前
ORA-01110: 数据文件 6:
'F:\ORACLE\PRODUCT\10.2.0\ORADATA\MYORACLE\MYORACLE\DATAFILE\O1_MF_USER0716_723C
8OXS_.DBF'
SQL> alter tablespace user0716 online;
表空间已更改。
SQL> alter database datafile 6 online;
数据库已更改。
?这样就OK了 为什么,不用设置隐含参数_allow_resetlogs_corruption解决ora-01190??
倒数第二个resetlogs open是我在重建controlfile的时候使用的,之后backup database了
这次基于时间点恢复使用的备份集就是这个备份
drop表空间时未删除数据文件,restore的时候为什么不见datafile 6的restore?
因为是只读表空间的restore吗
先写到这,问问专家去
看来ora-01190需要具体分析,不要随便设置隐含参数