这种环境下,大家讨论下db可以恢复么?

[复制链接]
查看11 | 回复8 | 2007-6-27 09:39:55 | 显示全部楼层 |阅读模式
os:win xp
db:ora10.2.0.4(archive log)
1、whole cold backup
2、switch logfile
3、shutdown database,
4、还原冷备份中的controlfile、redo logfile、system.dbf
5、startup mount
6、SQL>@get_scn
CTL_SCN_V$DATABASE
------------------
4870746

CTL_DBF_SCN_V$DATAFILE
----------------------

4870746

4870746

4870746

4870746

4870746

4870746

4870746

4870746

4870746

4870746

4870746
CTL_DBF_SCN_V$DATAFILE
----------------------

4870746

4870746

4870746
已选择14行。

CTL_LOG_SCN_V$THREAD
--------------------

4870746

DBF_SCN_V$DATAFILE_HEADER
-------------------------

4870746

4871067

4871067

4871067

4871067

4871067

4871067

4871067

4871067

4871067

4871067
DBF_SCN_V$DATAFILE_HEADER
-------------------------

4871067

4871067

4871067
已选择14行。
除了数据文件头包含的是最新的scn(除了system.dbf),controlfile与redolog记录的都是旧的scn
[ 本帖最后由 lixiang114 于 2009-8-21 10:26 编辑 ]
回复

使用道具 举报

千问 | 2007-6-27 09:39:55 | 显示全部楼层
数据文件呢?
回复

使用道具 举报

千问 | 2007-6-27 09:39:55 | 显示全部楼层
原帖由 jidongzheng 于 2009-8-21 10:34 发表
数据文件呢?

数据文件时最新的,但是system.dbf、controlfile、redolog是冷备份的,我尝试恢复几次都没有成功
回复

使用道具 举报

千问 | 2007-6-27 09:39:55 | 显示全部楼层
你这样一定不能恢复,因为controlfile要最新的才行做完整恢复,archive log也不能遗失,
而数据文件scn不能比controlfile还新,你这样最多回复到冷备份时点
回复

使用道具 举报

千问 | 2007-6-27 09:39:55 | 显示全部楼层
只还原system.dbf,controlfiel,mount db backup controlfile to trace,用controlfile的trace文件重建controlfile,然后recover database using backup controlfile until cancel,
[ 本帖最后由 zergduan 于 2009-8-21 11:04 编辑 ]
回复

使用道具 举报

千问 | 2007-6-27 09:39:55 | 显示全部楼层
原帖由 zergduan 于 2009-8-21 11:02 发表
只还原system.dbf,controlfiel,mount db backup controlfile to trace,用controlfile的trace文件重建controlfile,然后recover database using backup controlfile until cancel,

恩,这个方法我尝试过了,如果保留redolog的话,利用这个方法确实可以恢复,现在讨论的是也还原redolog
回复

使用道具 举报

千问 | 2007-6-27 09:39:55 | 显示全部楼层
没日志,只要数据文件和SYSTEM.DBF不一致,没法恢复。
回复

使用道具 举报

千问 | 2007-6-27 09:39:55 | 显示全部楼层
怪哉
如下是我尝试重建控制文件恢复的步骤:
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
回复

使用道具 举报

千问 | 2007-6-27 09:39:55 | 显示全部楼层
顶一下!!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行