大概情况:
使用旧的控制文件(不是很旧的控制文件)恢复数据库,提示控制文件或数据文件 1 来自于最后一个 RESETLOGS
之前,因用于恢复的控制文件是上次RESETLOGS打开前的控制文件
如下:
SQL> alter database open;
alter database open
*
第 1 行出现错误:
ORA-01190: 控制文件或数据文件 1 来自于最后一个 RESETLOGS 之前
ORA-01110: 数据文件 1:
'D:\ORACLE\PRODUCT\10.1.0\ORADATA\MYORACLE\SYSTEM01.DBF'
SQL> recover database using backup
controlfile;
ORA-00283: 恢复会话因错误而取消
ORA-19909: 数据文件 1 属于孤立的原型
ORA-01110: 数据文件 1:
'D:\ORACLE\PRODUCT\10.1.0\ORADATA\MYORACLE\SYSTEM01.DBF'
进入Rman进行恢复
RMAN> list incarnation;
正在使用目标数据库控制文件替代恢复目录
数据库原型列表
DB 关键字
------- ------- -------- ---------------- --- ----------
----------
1
2
3
4
5
8
7
9
6
10
RMAN> recover database;
启动 recover 于 26-8月 -10
启动 implicit crosscheck backup 于 26-8月 -10
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: sid=159 devtype=DISK
已交叉检验的 42 对象
完成 implicit crosscheck backup 于 26-8月 -10
启动 implicit crosscheck copy 于 26-8月 -10
使用通道 ORA_DISK_1
完成 implicit crosscheck copy 于 26-8月 -10
搜索恢复区域中的所有文件
正在编制文件目录...
目录编制完毕
已列入目录的文件的列表
=======================
文件名:
D:\ORACLE\PRODUCT\10.1.0\FLASH_RECOVERY_AREA\MYORACLE\ARCHIVELOG\2010_08
_26\O1_MF_1_121_67CPP4FN_.ARC
文件名:
D:\ORACLE\PRODUCT\10.1.0\FLASH_RECOVERY_AREA\MYORACLE\ARCHIVELOG\2010_08
_26\O1_MF_1_122_67CPP0KK_.ARC
文件名:
D:\ORACLE\PRODUCT\10.1.0\FLASH_RECOVERY_AREA\MYORACLE\ARCHIVELOG\2010_08
_26\O1_MF_1_123_67CPP21X_.ARC
文件名:
D:\ORACLE\PRODUCT\10.1.0\FLASH_RECOVERY_AREA\MYORACLE\ARCHIVELOG\2010_08
_26\O1_MF_1_124_67CPP2QD_.ARC
文件名:
D:\ORACLE\PRODUCT\10.1.0\FLASH_RECOVERY_AREA\MYORACLE\ARCHIVELOG\2010_08
_26\O1_MF_1_125_67CPP69Q_.ARC
文件名:
D:\ORACLE\PRODUCT\10.1.0\FLASH_RECOVERY_AREA\MYORACLE\AUTOBACKUP\2010_08
_26\O1_MF_S_728044944_67COH3D0_.BKP
文件名:
D:\ORACLE\PRODUCT\10.1.0\FLASH_RECOVERY_AREA\MYORACLE\AUTOBACKUP\2010_08
_26\O1_MF_S_728046567_67CPQD5C_.BKP
使用通道 ORA_DISK_1
正在开始介质的恢复
存档日志线程 1 序列 1 已作为文件 D:\DISK3\REDO05A.LOG 存在于磁盘上
存档日志文件名 =D:\DISK3\REDO05A.LOG 线程 =1 序列 =1
完成介质的恢复
完成 recover 于 26-8月 -10
数据库恢复正常,使用resetlogs打开数据库
SQL> alter database open;
alter database open
*
第 1 行出现错误:
ORA-01589: 要打开数据库则必须使用 RESETLOGS 或 NORESETLOGS 选项
SQL> alter database open resetlogs;
数据库已更改。