Oracle数据库数据恢复、性能优化

找回密码
注册
搜索
热搜: 活动 交友 discuz
发新帖
1#
发表于 2017-8-3 16:47:58
  1. ORA-01589: 要打开数据库则必须使用 RESETLOGS 或 NORESETLOGS 选项
复制代码
你可以首先尝试是否可以使用alter database open resetlogs开库。

但是我估计应该是不行的。你的情况没有描述清楚,你宕机后数据库文件应该是当天的,而且你没有备份,那么你怎么通过recover将日志应用到昨天???还是说你通过的flashback database?
  1. [oracle@m1 ~]$ oerr ora 00399
  2. 00399, 0000, "corrupt change description in redo log"
  3. // *Cause:  A change vector in the redo log failed validation checks.
  4. // *Action: Do recovery with a good version of the log or do time based
  5. //          recovery up to the indicated time.
复制代码
在线重做日志损坏了,说明当前redo日志不可用,且为突发情况的数据库关闭。因此,你只能尝试强行开库了。

回复 显示全部楼层 道具 举报

2#
发表于 2017-8-3 16:57:30
本帖最后由 biotwang 于 2017-8-3 16:59 编辑

下文类似情况可做参考:

问题: 数据库启动时发生ORA-00354错误:

ORA-00354: corrupt redo log block header
ORA-00353: log corruption near block 32768 change 6715041179 time 04/23/2012 13:33:51

如何解决此ORA-00354报错?

回答: 你的日志文件头存在讹误损坏。如果这是个生产库,那么可以在MOS上开个SR寻求帮助。
oerr显示的ORA-00354信息如下:
  1. ORA-00354: Corrupt redo log block header.
  2. Cause: The block header on the redo block indicated by the accompanying error, is not reasonable.
  3. Action: Do recovery with a good version of the log or do time based recovery up to the indicated time.
  4. If this happens when archiving, archiving of the problem log can be skipped by clearing the log with the UNARCHIVED option.
  5. This must be followed by a backup of every datafile to insure recoverability of the database.
复制代码
Oracle会推荐你使用隐藏参数来开库:
  1. alter system set "_allow_restlogs_corruption"=true scope=both;
复制代码
之后检查为归档redo日志:
SQL> select * from v$log;

如果看到未归档日志文件,那么尝试使用以下命令进行归档清理::
  1. SQL> alter database clear unarchived logfile 'logilename';
复制代码
这样做,很明显你会丢一个重做日志,因此在开库后,一个全备是需要的。

回复 显示全部楼层 道具 举报

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

QQ|手机版|Archiver|Oracle数据库数据恢复、性能优化

GMT+8, 2024-5-17 15:40 , Processed in 0.047435 second(s), 20 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部
TEL/電話+86 13764045638
Email service@parnassusdata.com
QQ 47079569