怪哉
如下是我尝试重建控制文件恢复的步骤:
1CREATE CONTROLFILE REUSE DATABASE "LIXIANG" RESETLOGSARCHIVELOG
2MAXLOGFILES 16
3MAXLOGMEMBERS 3
4MAXDATAFILES 100
5MAXINSTANCES 8
6MAXLOGHISTORY 292
7LOGFILE
8GROUP 1 (
9'D:\ORACLE\PRODUCT\10.2.0\ORADATA\LIXIANG\REDO01.LOG',
10'D:\ORACLE\PRODUCT\10.2.0\ORADATA\REDOLOG\REDO01.LOG'
11) SIZE 50M,
12GROUP 2 (
13'D:\ORACLE\PRODUCT\10.2.0\ORADATA\LIXIANG\REDO02.LOG',
14'D:\ORACLE\PRODUCT\10.2.0\ORADATA\REDOLOG\REDO02.LOG'
15) SIZE 50M,
16GROUP 3 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\LIXIANG\REDO03.LOG'SIZE 50M
17-- STANDBY LOGFILE
18DATAFILE
19'D:\ORACLE\PRODUCT\10.2.0\ORADATA\LIXIANG\SYSTEM01.DBF',
20'D:\ORACLE\PRODUCT\10.2.0\ORADATA\LIXIANG\LIXIANG_TEST.DBF',
21'D:\ORACLE\PRODUCT\10.2.0\ORADATA\LIXIANG\SYSAUX01.DBF',
22'D:\ORACLE\PRODUCT\10.2.0\ORADATA\LIXIANG\USERS01.DBF',
23'D:\ORACLE\PRODUCT\10.2.0\ORADATA\LIXIANG\LIXIANG.DBF',
24'D:\ORACLE\PRODUCT\10.2.0\ORADATA\LIXIANG\UNDOTBS02.DBF',
25'D:\ORACLE\PRODUCT\10.2.0\ORADATA\LIXIANG\LEON.DBF',
26'D:\ORACLE\PRODUCT\10.2.0\ORADATA\LIXIANG\DZKFREPORT.DBF',
27'D:\ORACLE\PRODUCT\10.2.0\ORADATA\LIXIANG\DZKFSYS.DBF',
28'D:\ORACLE\PRODUCT\10.2.0\ORADATA\LIXIANG\ MEETINGMANAGER.DBF',
29'D:\ORACLE\PRODUCT\10.2.0\ORADATA\LIXIANG\TEST.DBF',
30'D:\ORACLE\PRODUCT\10.2.0\ORADATA\LIXIANG\DEMO.DBF',
31'D:\ORACLE\PRODUCT\10.2.0\ORADATA\LIXIANG\DFMBRC',
32'D:\ORACLE\PRODUCT\10.2.0\ORADATA\LIXIANG\UNDOTBS03.DBF'
33* CHARACTER SET ZHS16GBK
SQL>
SQL> /
控制文件已创建。
SQL>
SQL> recover database using backup controlfile;
ORA-00279: 更改 4870746 (在 08/20/2009 14:16:16 生成) 对于线程 1 是必需的
ORA-00289: 建议:
D:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\LIXIANG\ARCHIVELOG\2009_08_21\O1_MF
_1_93_%U_.ARC
ORA-00280: 更改 4870746 (用于线程 1) 在序列 #93 中
指定日志: {=suggested | filename | AUTO | CANCEL}
ORA-00279: 更改 4871049 (在 08/20/2009 14:33:29 生成) 对于线程 1 是必需的
ORA-00289: 建议:
D:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\LIXIANG\ARCHIVELOG\2009_08_21\O1_MF
_1_94_%U_.ARC
ORA-00280: 更改 4871049 (用于线程 1) 在序列 #94 中
ORA-00278: 此恢复不再需要日志文件
'D:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\LIXIANG\ARCHIVELOG\2009_08_20\O1_M
F_1_93_58SVKSWS_.ARC'
指定日志: {=suggested | filename | AUTO | CANCEL}
ORA-00279: 更改 4871051 (在 08/20/2009 14:33:33 生成) 对于线程 1 是必需的
ORA-00289: 建议:
D:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\LIXIANG\ARCHIVELOG\2009_08_21\O1_MF
_1_95_%U_.ARC
ORA-00280: 更改 4871051 (用于线程 1) 在序列 #95 中
ORA-00278: 此恢复不再需要日志文件
'D:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\LIXIANG\ARCHIVELOG\2009_08_20\O1_M
F_1_94_58SVKYFO_.ARC'
指定日志: {=suggested | filename | AUTO | CANCEL}
ORA-00279: 更改 4871058 (在 08/20/2009 14:33:49 生成) 对于线程 1 是必需的
ORA-00289: 建议:
D:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\LIXIANG\ARCHIVELOG\2009_08_21\O1_MF
_1_96_%U_.ARC
ORA-00280: 更改 4871058 (用于线程 1) 在序列 #96 中
ORA-00278: 此恢复不再需要日志文件
'D:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\LIXIANG\ARCHIVELOG\2009_08_20\O1_M
F_1_95_58SVLG4D_.ARC'
指定日志: {=suggested | filename | AUTO | CANCEL}
ORA-00279: 更改 4871065 (在 08/20/2009 14:34:07 生成) 对于线程 1 是必需的
ORA-00289: 建议:
D:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\LIXIANG\ARCHIVELOG\2009_08_21\O1_MF
_1_97_%U_.ARC
ORA-00280: 更改 4871065 (用于线程 1) 在序列 #97 中
ORA-00278: 此恢复不再需要日志文件
'D:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\LIXIANG\ARCHIVELOG\2009_08_20\O1_M
F_1_96_58SVM098_.ARC'
指定日志: {=suggested | filename | AUTO | CANCEL}
ORA-00279: 更改 4871067 (在 08/20/2009 14:34:10 生成) 对于线程 1 是必需的
ORA-00289: 建议:
D:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\LIXIANG\ARCHIVELOG\2009_08_21\O1_MF
_1_98_%U_.ARC
ORA-00280: 更改 4871067 (用于线程 1) 在序列 #98 中
ORA-00278: 此恢复不再需要日志文件
'D:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\LIXIANG\ARCHIVELOG\2009_08_20\O1_M
F_1_97_58SVM3J3_.ARC'
指定日志: {=suggested | filename | AUTO | CANCEL}
ORA-00308: 无法打开归档日志
'D:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\LIXIANG\ARCHIVELOG\2009_08_21\O1_M
F_1_98_%U_.ARC'
ORA-27041: 无法打开文件
OSD-04002: 无法打开文件
O/S-Error: (OS 2) 系统找不到指定的文件。
SQL> recover database using backup controlfile until cancel;
ORA-00279: 更改 4871067 (在 08/20/2009 14:34:10 生成) 对于线程 1 是必需的
ORA-00289: 建议:
D:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\LIXIANG\ARCHIVELOG\2009_08_21\O1_MF
_1_98_%U_.ARC
ORA-00280: 更改 4871067 (用于线程 1) 在序列 #98 中
指定日志: {=suggested | filename | AUTO | CANCEL}
cancel
ORA-01547: 警告: RECOVER 成功但 OPEN RESETLOGS 将出现如下错误
ORA-01194: 文件 2 需要更多的恢复来保持一致性
ORA-01110: 数据文件 2:
'D:\ORACLE\PRODUCT\10.2.0\ORADATA\LIXIANG\LIXIANG_TEST.DBF'
ORA-01112: 未启动介质恢复
SQL>
SQL> @get_scn
CTL_SCN_V$DATABASE
------------------
0
CTL_DBF_SCN_V$DATAFILE
----------------------
4871067
4871067
4871067
4871067
4871067
4871067
4871067
4871067
4871067
4871067
4871067
CTL_DBF_SCN_V$DATAFILE
----------------------
4871067
4871067
4871067
已选择14行。
CTL_LOG_SCN_V$THREAD
--------------------
0
DBF_SCN_V$DATAFILE_HEADER
-------------------------
4871067
4871067
4871067
4871067
4871067
4871067
4871067
4871067
4871067
4871067
4871067
DBF_SCN_V$DATAFILE_HEADER
-------------------------
4871067
4871067
4871067
已选择14行。
SQL>
神奇的是在没有利用
D:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\LIXIANG\ARCHIVELOG\2009_08_21\O1_MF
_1_98_%U_.ARC 这个归档日志(准确的说应该是最后的redologfile)
竟然控制文件中记录的数据文件scn 与数据文件头记录的scn号恢复到最新并一致状态了!!!
而控制文件中因为重建控制文件resetlog的原因(v$database,V$THREAD)另外2个记录的scn号却依然是0
|