DB笔试面试225在Oracle中,如果联机Redo日志文件损坏,那么如何恢复?
Posted DB宝
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了DB笔试面试225在Oracle中,如果联机Redo日志文件损坏,那么如何恢复?相关的知识,希望对你有一定的参考价值。
在Oracle中,如果联机Redo日志文件损坏,那么如何恢复?
答案:联机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://mp.weixin.qq.com/s/Vm5PqNcDcITkOr9cQg6T7w |
● 本系列题目来源于作者的学习笔记,部分整理自网络,若有侵权或不当之处还请谅解
● 版权所有,欢迎分享本文,转载请保留出处
● 题目解答若有不当之处,还望各位朋友批评指正,共同进步
以上是关于DB笔试面试225在Oracle中,如果联机Redo日志文件损坏,那么如何恢复?的主要内容,如果未能解决你的问题,请参考以下文章
DB笔试面试164在Oracle中,如何彻底停止expdp数据泵进程?