首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在Oracle中,如果联机Redo日志文件损坏,那么如何恢复?

Q

题目如下所示:

在Oracle中,如果联机Redo日志文件损坏,那么如何恢复?

A

答案如下所示:

答案:联机Redo日志是Oracle数据库中比较核心的文件,当联机Redo日志文件异常之后,数据库就无法正常启动,而且有丢失数据的风险,强烈建议在条件允许的情况下,对联机Redo日志进行多路镜像。需要注意的是,RMAN不能备份联机Redo日志文件。所以,联机Redo日志一旦出现故障,则只能进行清除日志了。清除日志文件即表明可以重用该文件。如果日志文件已经归档(状态为INACTIVE,启动报ORA-00327错误),那么可以使用:

ALTER DATABASE CLEAR LOGFILE GROUP N;

如果数据库正常关闭,且该日志还没有归档(状态为ACTIVE或CURRENT,启动报ORA-01623错误),那么需要用:

ALTER DATABASE CLEAR UNARCHIVED LOGFILE GROUP N;--不需要数据文件

ALTER DATABASE CLEAR UNARCHIVED LOGFILE ...UNRECOVERABLE DATAFILE; --需要数据文件

也可以尝试以下恢复:

--ALTER DATABASE CLEAR LOGFILE GROUP 1;

RECOVER DATABASE UNTIL CANCEL;

ALTER DATABASE OPEN RESETLOGS;

如果数据库异常关闭,状态为ACTIVE或CURRENT,启动报ORA-01624或ORA-01194错误,那么一般不能执行CLEAR,而且可能意味着丢失数据。一般情况下,只能设置隐含参数“_ALLOW_RESETLOGS_CORRUPTION=TRUE”来进行强制执行不完全恢复了,如下所示:

alter system set "_allow_resetlogs_corruption"=true scope=spfile;

recover database until cancel; --cancel

alter database open resetlogs;

alter system set "_allow_resetlogs_corruption"=false scope=spfile;

alter system reset "_allow_resetlogs_corruption" scope=spfile sid='*';

shutdown immediate

startup

可以使用以下命令查看联机Redo日志的状态:

col member for a45

set lines 120

SELECT thread#,

a.sequence#,

a.group#,

TO_CHAR (first_change#, '9999999999999999') "SCN",

a.status,

MEMBER

FROM v$log a, v$logfile b

WHERE a.group# = B.GROUP#

ORDER BY a.sequence# DESC;

&说明:

有关联机Redo日志文件的恢复的更多内容可以参考我的BLOG:http://blog.itpub.net/26736162/viewspace-2141732/

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180415B04XSA00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券