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

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

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

resetlogs 时的 change scn 已经查到。

谢谢
...全文
455 13 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
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 ...
先启动数据库再说

3,494

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 高级技术相关讨论专区
社区管理员
  • 高级技术社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧