Oracle数据库Redo故障的恢复

一.丢失inactive日志文件组的恢复:

由于inactive日志文件组表示已经完成了检查点(dirty数据已经被写入数据文件)。数据库本身不会发生数据库丢失,如果在这个时候相应的redo丢失/损坏,可以通过clear重建日志文件组恢复。

通过命令:

alter database clear logfile group n

如果数据库模式是archived的,则需要强制清除

alter database clear unarchived logfile group n

二.丢失active或current日志文件组的恢复:

丢失情况分两种:

一个是正常关闭数据库(如shutdown immediate)

另一个是异常关闭数据库(如shutdown abort)

1.在损失当前日志时,数据库是正常关闭状态。

由于shutdown immediate会执行全面的checkpoint,所以当前日志在实例恢复时可以不需要redo

在Oracle 8i中我们完全可以通过alter database clear logfile group n来进行恢复.

但是在Oracle 9i中,则可能无法对current的redo日志进行clear,需要通过recover database until cancel恢复后(必须要做的)

用resetlogs选项打开。

比如:

alter database clear logfile group n

recover database until cancel;

alter database open resetlogs;

2.在损失当前日志时,数据库是异常关闭的:

这种情况下,由于没有在执行全面检查点时,数据库就已经关闭了,那么Oracle在进行实例恢复的时候必须要求当前的日志,否则Oracle数据库将无法open.

这样的情况下,我们通常需要从备份中恢复数据文件,通过应用归档日志进行向前推演。直到最后一个完好的日志文件,然后可以通过resetlogs启动数据库完成恢复。那么丢失的数据则是被损坏的日志文件中的数据。

注意:_allow_resetlogs_corruption是Oracle中的一个隐含参数,如果系统实在不能resetlogs方式打开的后只能出此下策,在pfile进行相应设置打开数据库。该函数的含义是,允许在破坏一致性的情况下强制重置日志,打开数据库。_allow_resetlogs_corruption将使用所有数据文件最旧的SCN打开数据库,所以通常来讲需要保证SYSTEM表空间拥有最旧的SCN。在强制打开数据库之后,可能因为各种原因会有ora-600

时间: 2024-10-30 04:19:04

Oracle数据库Redo故障的恢复的相关文章

Oracle数据库的备份及恢复策略研究

oracle|备份|策略|恢复|数据|数据库     摘 要 恢复丢失的数据库文件在很大程度上取决于所采用的备份策略.本文从恢复的灵活性出发,对Oracle8数据库的备份及恢复策略进行了探讨,并给出了Windows 2000环境下使备份过程自动化的脚本文件的项目开发实例. 关键词 Oracle 数据库 备份 恢复 引言 随着信息系统在各种商务活动中重要性的不断增强,维护系统数据的可用性已成为当前一个十分重要的课题.为了有效地保持健康的信息系统,必须采取一定的措施防止在由介质.操作系统.软件和其它

Oracle数据库的备份及恢复策略研究_oracle

正在看的ORACLE教程是:Oracle数据库的备份及恢复策略研究. 摘 要 恢复丢失的数据库文件在很大程度上取决于所采用的备份策略.本文从恢复的灵活性出发,对Oracle8数据库的备份及恢复策略进行了探讨,并给出了Windows 2000环境下使备份过程自动化的脚本文件的项目开发实例. 关键词 Oracle 数据库 备份 恢复 引言 随着信息系统在各种商务活动中重要性的不断增强,维护系统数据的可用性已成为当前一个十分重要的课题.为了有效地保持健康的信息系统,必须采取一定的措施防止在由介质.操作

Oracle报错ORA-00604 ORA-00376 数据库redo undo丢失恢复例子

运维DBA反映数据库存储故障,导致redo undo两个表空间数据文件丢失,数据库无法open启动 某集团的ebs系统因磁盘空间不足把redo和undo存放到raid 0之上,而且该库无任何备份.最终悲剧发生了,raid 0异常导致redo undo全部丢失,数据库无法正常启动(我接手之时数据库已经resetlogs过,但是未成功) 1.Oracle报错ORA-00604 ORA-00376 Sun Jul 27 11:31:27 2014 SMON: enabling cache recove

Oracle数据库REDO管理

一.什么是REDO LOG REDOLOG文件是十分重要的文件,它记录了Oracle的所有变化,是数据库实例恢复机制中最为关键的组成部分. sys@OCM> select * from v$log; GROUP#    THREAD#  SEQUENCE#      BYTES  BLOCKSIZE    MEMBERS ARC STATUS           FIRST_CHANGE# FIRST_TIME     NEXT_CHANGE# NEXT_TIME ---------- ----

oracle数据库错误ora-00600 [3712] 恢复案例

在Oracle数据库的日常维护中,我们可能经常会遇到一些从未见过的错误,甚至莫名其妙的错误.很多时候,甚至通过metalink.baidu.甚至google 都无法搜索到相关内容.这不,昨天公司南区同事让帮忙恢复的的一个客户数据库:据说是归档数据库,没有备份,重启实例后就无法打开数据库了. 我也是第一次听说这种事情,看了下居然是Oracle 11.2.0.3的数据库,还有这样起码的事情,确实有点匪夷所思.首先我们来看下是报错是什么样的.   看到这个错误.我感觉有一定似曾相识的感觉,但是有又说不

Oracle 数据库灾难性环境下恢复实例

一.版本和数据库文件信息 1.Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production 2.PL/SQL Release 11.2.0.3.0 - Production 3.CORE 11.2.0.3.0 Production 4.TNS for Linux: Version 11.2.0.3.0 - Production 5.NLSRTL Version 11.2.0.3.0 - Productio

oracle数据库ORA-600 3020错误恢复思路分析

recover database 报ORA-600 3020  代码如下 复制代码 Recovery of Online Redo Log: Thread 1 Group 2 Seq 5729 Reading mem 0   Mem# 0: E:\ORACLE\ORADATA\YYGDB\REDO02.LOG Tue Aug 19 19:37:29 2014 Errors in file d:\oracle\diag\rdbms\yygdb\yygdb\trace\yygdb_pr0s_4296

oracle数据库11203 RAC(asm)恢复的例子

前天某客户的11203 rac(asm)出现掉电,导致数据库无法启动,注意数据库是归档模式.可见是多么倒霉. 据同事说开始是由于发redo和undo损坏导致无法启动,部分信息如下: Thu May 08 20:51:07 2014  Dumping diagnostic data in directory=[cdmp_20140508205107], requested by (instance=1, osid=13828272), summary=[incident=77085].  Abor

数据库常见故障及恢复原理

 系统故障及恢复原理     系统故障主要是由于服务器在运行过程中,突然发生操作系统错误.停电等原因造成的非正常中断,用户对数据库进行处理的事务被突然中断,内存缓冲区中的数据全部丢失,但硬盘.磁带等外设上的数据未受损失. 介质故障及恢复原理     介质故障是由于硬件的可靠性较差出现的存储介质发生物理损坏.数据库的数据全部或部分丢失,破坏性较大. 事务故障及恢复原理     事务故障是某些对数据库进行操作的事务违反了系统设定的条件,如输入数据错误.运算溢出等,使事务未能正常完成就终止.发生事务故