高手请进,关于resetlogs的问题。难!

nowhappy 2004-05-07 11:24:36
有alter database open resetlogs之前的冷备,resetlogs之后没有备份,现某个数据文件丢失,但有当前控制文件。请问能否恢复数据。

常理,resetlogs之后是要备份的,之前的archivelog不可用。但理论上是可以恢复的,oracle有个恢复的不建议做法。但我没试成功,请高手指点。

resetlogs 时的 change scn 已经查到。

谢谢
...全文
418 13 点赞 打赏 收藏 举报
写回复
13 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
nowhappy 2004-06-27
不好意思,忙了一阵子,没时间研究了
继续
  • 打赏
  • 举报
回复
nowhappy 2004-05-09
更正错误:resetlogs之后scn不置零,而是增加了resetlog_change#。

但不明白为什么还有一下错误。

3、用RESETLOGS之后的当前控制文件恢复,有问题。
SQL> startup
ORACLE instance started.

Total System Global Area 101784276 bytes
Fixed Size 453332 bytes
Variable Size 75497472 bytes
Database Buffers 25165824 bytes
Redo Buffers 667648 bytes
Database mounted.
ORA-01190: controlfile or data file 1 is from before the last RESETLOGS
ORA-01110: data file 1: 'O:\ORACLE\ORADATA\LEEGLE\SYSTEM01.DBF'


SQL> recover database;
ORA-00283: recovery session canceled due to errors
ORA-01190: controlfile or data file 1 is from before the last RESETLOGS
ORA-01110: data file 1: 'O:\ORACLE\ORADATA\LEEGLE\SYSTEM01.DBF'

我是用resetlogs之后的控制文件恢复的。按理,recover database应该能够进行的。可还是下不去。我重建controlfile,用recover database using backup controlfile until cancel;还是不能恢复,提示错误一样。


还在研究中……
http://www.itpub.net/showthread.php?s=&threadid=110555&highlight=resetlogs
文档很有用,谢谢JiangHua0903(爬爬虫) 。
  • 打赏
  • 举报
回复
JiangHua0903 2004-05-09
to:nowhappy()

第一次恢复后的数据库可以算是open resetlogs后的备份??
resetlogs之后的scn已经置0了。
但控制文件和数据文件的scn还是不一致,是吗?
问题怀疑在resetlogs之后的change#和archive 1# log之间change#的衔接,但我已经恢复到until change 66512(resetlogs之时的change#)了,还是有问题,请高手指点。

所以第一次恢复用的是原来的控制文件,第二次是用resetlogs之后的控制文件。
你可以看看这个帖子,里面讨论的很详细。
http://www.itpub.net/showthread.php?s=&threadid=110555&highlight=resetlogs

  • 打赏
  • 举报
回复
LGQDUCKY 2004-05-08
你有归档日子吗?也就是数据库是归档的还是非归档的?
  • 打赏
  • 举报
回复
nowhappy 2004-05-08
Oracle9i Enterprise Edition Release 9.2.0.1.0

我试过了,open resetlogs 之后,shutdown immediate; 用当前的控制文件替换,alter database open, 提示控制文件和数据文件不符,一个是resetlogs前的,一个是resetlogs后的。

下午我把错误贴出来。
  • 打赏
  • 举报
回复
LGQDUCKY 2004-05-08
是哪个版本的数据库?
你先把备份的数据库恢复回来,然后使用下面的方法试

SVRMGRL
SVRMGRL>CONNECT INTERNAL
SVRMGRL>STARTUP MOUNT
SVRMGRL>RECOVER DATABASE UNTIL CHANGE SCN;--查到的SCN号
SVRMGRL>ALTER DATABASE OPEN RESETLOGS;
  • 打赏
  • 举报
回复
nowhappy 2004-05-08
exp没问题啊,但resetlogs之后的数据就没了啊。
关键是要resetlogs之后的数据,就因resetlogs之后没有立刻冷备,所以才这样周折。
  • 打赏
  • 举报
回复
LGQDUCKY 2004-05-08
既然能打开数据库,为什么不马上EXP数据库呢?
  • 打赏
  • 举报
回复
nowhappy 2004-05-08
to:JiangHua0903(爬爬虫)

第一次恢复后的数据库可以算是open resetlogs后的备份??
resetlogs之后的scn已经置0了。
但控制文件和数据文件的scn还是不一致,是吗?
问题怀疑在resetlogs之后的change#和archive 1# log之间change#的衔接,但我已经恢复到until change 66512(resetlogs之时的change#)了,还是有问题,请高手指点。



  • 打赏
  • 举报
回复
nowhappy 2004-05-08


1、用RESETLOGS前的原始备份和RESETLOGS前的控制文件恢复正常。

alert.log中的记录
alter database open resetlogs
RESETLOGS after complete recovery through change 66512



SQL> startup
ORACLE instance started.

Total System Global Area 101784276 bytes
Fixed Size 453332 bytes
Variable Size 75497472 bytes
Database Buffers 25165824 bytes
Redo Buffers 667648 bytes
Database mounted.
ORA-01113: file 1 needs media recovery
ORA-01110: data file 1: 'O:\ORACLE\ORADATA\LEEGLE\SYSTEM01.DBF'


SQL> recover database using backup controlfile until change 66512;
ORA-00279: change 66180 generated at 05/06/2004 10:23:13 needed for thread 1
ORA-00289: suggestion : O:\ORACLE\ORADATA\LEEGLE\ARCHIVE\ARC_65.1
ORA-00280: change 66180 for thread 1 is in sequence #65


Specify log: {<RET>=suggested | filename | AUTO | CANCEL}
auto
ORA-00279: change 66383 generated at 05/08/2004 16:09:53 needed for thread 1
ORA-00289: suggestion : O:\ORACLE\ORADATA\LEEGLE\ARCHIVE\ARC_66.1
ORA-00280: change 66383 for thread 1 is in sequence #66
ORA-00278: log file 'O:\ORACLE\ORADATA\LEEGLE\ARCHIVE\ARC_65.1' no longer
needed for this recovery


ORA-00279: change 66389 generated at 05/08/2004 16:10:09 needed for thread 1
ORA-00289: suggestion : O:\ORACLE\ORADATA\LEEGLE\ARCHIVE\ARC_67.1
ORA-00280: change 66389 for thread 1 is in sequence #67
ORA-00278: log file 'O:\ORACLE\ORADATA\LEEGLE\ARCHIVE\ARC_66.1' no longer
needed for this recovery


ORA-00279: change 66433 generated at 05/08/2004 16:11:49 needed for thread 1
ORA-00289: suggestion : O:\ORACLE\ORADATA\LEEGLE\ARCHIVE\ARC_68.1
ORA-00280: change 66433 for thread 1 is in sequence #68
ORA-00278: log file 'O:\ORACLE\ORADATA\LEEGLE\ARCHIVE\ARC_67.1' no longer
needed for this recovery


ORA-00279: change 66446 generated at 05/08/2004 16:12:27 needed for thread 1
ORA-00289: suggestion : O:\ORACLE\ORADATA\LEEGLE\ARCHIVE\ARC_69.1
ORA-00280: change 66446 for thread 1 is in sequence #69
ORA-00278: log file 'O:\ORACLE\ORADATA\LEEGLE\ARCHIVE\ARC_68.1' no longer
needed for this recovery


ORA-00279: change 66451 generated at 05/08/2004 16:12:34 needed for thread 1
ORA-00289: suggestion : O:\ORACLE\ORADATA\LEEGLE\ARCHIVE\ARC_70.1
ORA-00280: change 66451 for thread 1 is in sequence #70
ORA-00278: log file 'O:\ORACLE\ORADATA\LEEGLE\ARCHIVE\ARC_69.1' no longer
needed for this recovery


ORA-00308: cannot open archived log 'O:\ORACLE\ORADATA\LEEGLE\ARCHIVE\ARC_70.1'
ORA-27041: unable to open file
OSD-04002: unable to open file
O/S-Error: (OS 2) 系统找不到指定的文件。

(当前归档文件就只到69号,这个提示是正常的。)

SQL> select checkpoint_change# from v$database;

CHECKPOINT_CHANGE#
------------------
66512

SQL> alter database open resetlogs;

Database altered.


2、以上表明RESETLOGS之前恢复正常。

SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.

3、用RESETLOGS之后的当前控制文件恢复,有问题。
SQL> startup
ORACLE instance started.

Total System Global Area 101784276 bytes
Fixed Size 453332 bytes
Variable Size 75497472 bytes
Database Buffers 25165824 bytes
Redo Buffers 667648 bytes
Database mounted.
ORA-01190: controlfile or data file 1 is from before the last RESETLOGS
ORA-01110: data file 1: 'O:\ORACLE\ORADATA\LEEGLE\SYSTEM01.DBF'


SQL> recover database;
ORA-00283: recovery session canceled due to errors
ORA-01190: controlfile or data file 1 is from before the last RESETLOGS
ORA-01110: data file 1: 'O:\ORACLE\ORADATA\LEEGLE\SYSTEM01.DBF'



4、不能正常下去,不知错误在哪,请指点。





  • 打赏
  • 举报
回复
JiangHua0903 2004-05-08
在归档情况和一定条件下可以恢复。
基本原理是,用open resetlogs前的备份恢复(要用原来的控制文件和归档日志文件),恢复完后再用open resetlogs后的控制文件和归档日志文件来做第二次恢复。
第一次恢复后的数据库可以算是open resetlogs后的备份。
也就是说你原来的控制文件和归档日志文件必须还在才能恢复。
  • 打赏
  • 举报
回复
nowhappy 2004-05-07
数据库启动没问题,offline 就可以启动了。
但数据啊,数据就没了?

  • 打赏
  • 举报
回复
esunny 2004-05-07
alter database delete datafile ...
先启动数据库再说
  • 打赏
  • 举报
回复
相关推荐
发帖
Oracle 高级技术
加入

3439

社区成员

Oracle 高级技术相关讨论专区
申请成为版主
帖子事件
创建了帖子
2004-05-07 11:24
社区公告
暂无公告