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

找回密码
注册
搜索
热搜: 活动 交友 discuz
发新帖

999

积分

1

好友

942

主题
1#
发表于 2017-4-17 15:54:32 | 查看: 2878| 回复: 2
本帖最后由 ALLSTARS_ORACLE 于 2017-4-27 13:27 编辑

我的联机重做日志文件有一个被损坏了,没有复合重做日志文件,现在数据库起不起来了,怎么办阿?
下载专业ORACLE数据库恢复工具PRM-DUL  For Oracle http://www.parnassusdata.com/

如果自己搞不定可以找诗檀软件专业ORACLE数据库修复团队成员帮您恢复!

诗檀软件专业数据库修复团队

服务热线 : 13764045638  QQ: 47079569     邮箱:service@parnassusdata.com
2#
发表于 2017-4-27 13:57:12
如果自己搞不定可以找诗檀软件专业ORACLE数据库修复团队成员帮您恢复!
诗檀软件专业数据库修复团队
服务热线 : 13764045638    QQ号:47079569    邮箱:service@parnassusdata.com

问题:  我有一个数据文件显示需要介质恢复:
ORA-00279 change xxxxxx generated at needed for thread

ORA-00289 suggestion C:|oracle\ora92\rdbms\arc0611.001

ORA-00280: change xxxxxx for thread 1 is in sequence #6611
Specify log:

但是当我执行 “recover database” 命令,我再也没有归档重做日志了,因为我删除了重做日志,如何才能恢复数据文件中剩下的数据呢?
回答: Oracle 提供重做日志,启用前滚操作, proper mirroring of redo log files是 Oracle 一个最好的实践。

如果你没有所需要的归档重做日志来恢复数据库,你可能因此被解雇,但是在工作保住的情况下,你需要考虑丢失的重做日志文件问题。

因为归档重做日志丢失,你将不能使用崩溃恢复 “recover database” 命令同步表空间, 你的其他选择是:
尝试在之前的归档重做日志字典的OS级别备份中找到归档重做日志文件。恢复丢失的归档重做日志,你能够执行前滚介质恢复。
从之前的冷备份恢复,那里有成功前滚的重做日志。
和 Oracle 技术支持一起恢复数据库,关于丢失重做日志的恢复,请查看 MOSC note 177866.1 ,有专门的技术和参数,绕过 SCN损坏,进行部分数据恢复。
使用"recover until time" 进行部分前滚操作到丢失重做发生的点:


RMAN> RECOVER DATABASE UNTIL TIME "to_date('MAR 05 2015 19:00:00','MON DD YYYY HH24:MI:SS')";

RMAN> ALTER DATABASE OPEN RESETLOGS;

回复 只看该作者 道具 举报

3#
发表于 2017-7-28 10:54:14
本帖最后由 biotwang 于 2017-7-28 11:19 编辑

在线重做日志损坏的情况下, 恢复需要分多种情况:

如果数据库还在运行,那么只要先确保数据都落盘,且立即清理掉受损日志组即可 -
  1. alter system checkpoint;
  2. alter system switch logfile;
  3. alter database clear unarchived logfile group x;
  4. shutdown immediate;
  5. startup;
复制代码
如果数据库是通过shutdown immediate正常关闭,那么数据实际上已经落盘,只要清理受损日志组即可 -
  1. startup mount
  2. alter database clear unarchived logfile group x;
  3. alter database open;
复制代码
如果数据库为异常关闭,即shutdown abort,那么你就只能使用备份进行时间点恢复了 -
  1. RMAN> restore database;
  2. RMAN> recover database until time "to_date('MAR 05 2015 19:00:00','MON DD YYYY HH24:MI:SS')";

  3. RMAN> alter database open resetlogs;
复制代码
如果你没有备份,或你最好得到最多的最新的数据,无力承担数据丢失风险。那么你只能通过打开隐藏参数来尝试开库了 -
  1. alter system set "_allow_resetlogs_corruption"=true scope=spfile;
  2. shutdown immediate
  3. alter database open resetlogs;
复制代码
但是由于数据库不一致性会导致一连串的后继报错,之后只能是见招拆招了,祝你好运。

这里实际上我们可以关库,并使用PRM工具针对数据文件直接将数据抽取出来,这其实是最高效稳妥的方法。对于经验不足的DBA而言,不断尝试开库或操作错误会导致事件恶化、数据受损扩散影响,因此不推荐也非官方推荐方法。

回复 只看该作者 道具 举报

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

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

GMT+8, 2024-5-17 16:54 , Processed in 0.047119 second(s), 20 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

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