[Oracle] Active或Current联机日志文件丢失如何恢复?

2024-05-14 07:38

本文主要是介绍[Oracle] Active或Current联机日志文件丢失如何恢复?,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

联机日志文件状态为active或current表示该日志包含的数据修改还未完全同步到数据文件中,在实例恢复时,还需要读取其中的redo记录重演,因此如果损坏,数据丢失在所难免。

1)模拟灾难
首先查看log的状态:
SQL> select group#,sequence#,status from v$log;

    GROUP#  SEQUENCE# STATUS
---------- ---------- ----------------
         2          5 CURRENT
         3          3 INACTIVE
         4          4 INACTIVE

Group#2的状态为current,我们找出它所对应的磁盘文件为:
SQL> select group#,member from v$logfile where group#=2;

    GROUP# MEMBER
---------- ---------------------------------------------------------
         2 J:\INTEL_LOG\O04DMS0\REDO02.O04DMS0
如果数据库时正常关闭,在关闭之前,会做一次数据文件同步,因此为了模拟current文件丢失的情况,我们异常关闭数据库:
SQL> shutdown abort;
然后把Group#2对应的文件REDO02.O04DMS0在操作系统级别上删除。

2)根据错误信息定位问题
启动数据库会出现以下错误
SQL> startup
ORACLE instance started.

Total System Global Area  281018368 bytes
Fixed Size                  1296292 bytes
Variable Size             251660380 bytes
Database Buffers           25165824 bytes
Redo Buffers                2895872 bytes
Database mounted.
ORA-00313: open failed for members of log group 2 of thread 1
ORA-00312: online log 2 thread 1: 'J:\INTEL_LOG\O04DMS0\REDO02.O04DMS0'
ORA-27041: unable to open file
OSD-04002: unable to open file
O/S-Error: (OS 2) The system cannot find the file specified.

由于有一组日志文件丢失,因此数据库只能mount,无法open,查看一下丢失的日志文件是什么状态:
SQL> select group#,sequence#,status from v$log where group#=2;

    GROUP#  SEQUENCE# STATUS
---------- ---------- ----------------
         2          5CURRENT

非常不幸,丢失的日志文件时current状态,也就是说数据丢失时难免的,现在能问题是如何让数据库能正常打开。

这时候得修改一个隐藏参数_allow_resetlogs_corruption为true,这个参数为true表示” resetlogs forced to skip the consistency check“:

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

修改之后重启让其生效,接着做一次不完全恢复:
SQL> recover database until cancel;
ORA-00279: change 30656042 generated at 11/20/2011 05:32:01 needed for thread 1
ORA-00289: suggestion : H:\INTEL_ARCH\O04DMS0\O04DMS0_1_5_767679611.ARCH
ORA-00280: change 30656042 for thread 1 is in sequence #5

Specify log: {<RET>=suggested | filename | AUTO | CANCEL}
cancel
ORA-01547: warning: RECOVER succeeded but OPEN RESETLOGS would get error below
ORA-01194: file 1 needs more recovery to be consistent
ORA-01110: data file 1: 'I:\INTEL_DATA\O04DMS0\SYSTEM01.O04DMS0'

ORA-01112: media recovery not started

选择cancel,出现ORA-错误没关系,这是预料之中的,接着以resetlogs方式打开数据库:
SQL> alter database open resetlogs;
alter database open resetlogs
*
ERROR at line 1:
ORA-03113: end-of-file on communication channel

这时还是错误,可能是上面出现的ORA_03113,也可能是ORA-600错误,没关系,这都是在预料之中,最后重启一下就可以了。

此时REDO02.O04DMS0文件在操作系统级别上已经恢复回来了,在数据库中的状态如下:
SQL> select group#,sequence#,status from v$log;


    GROUP#  SEQUENCE# STATUS
---------- ---------- ----------------
         2          1 INACTIVE
         3          2 CURRENT
         4          0 UNUSED

这篇关于[Oracle] Active或Current联机日志文件丢失如何恢复?的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/988158

相关文章

使用SecondaryNameNode恢复NameNode的数据

1)需求: NameNode进程挂了并且存储的数据也丢失了,如何恢复NameNode 此种方式恢复的数据可能存在小部分数据的丢失。 2)故障模拟 (1)kill -9 NameNode进程 [lytfly@hadoop102 current]$ kill -9 19886 (2)删除NameNode存储的数据(/opt/module/hadoop-3.1.4/data/tmp/dfs/na

电脑桌面文件删除了怎么找回来?别急,快速恢复攻略在此

在日常使用电脑的过程中,我们经常会遇到这样的情况:一不小心,桌面上的某个重要文件被删除了。这时,大多数人可能会感到惊慌失措,不知所措。 其实,不必过于担心,因为有很多方法可以帮助我们找回被删除的桌面文件。下面,就让我们一起来了解一下这些恢复桌面文件的方法吧。 一、使用撤销操作 如果我们刚刚删除了桌面上的文件,并且还没有进行其他操作,那么可以尝试使用撤销操作来恢复文件。在键盘上同时按下“C

flume系列之:查看flume系统日志、查看统计flume日志类型、查看flume日志

遍历指定目录下多个文件查找指定内容 服务器系统日志会记录flume相关日志 cat /var/log/messages |grep -i oom 查找系统日志中关于flume的指定日志 import osdef search_string_in_files(directory, search_string):count = 0

我在移动打工的日志

客户:给我搞一下录音 我:不会。不在服务范围。 客户:是不想吧 我:笑嘻嘻(气笑) 客户:小姑娘明明会,却欺负老人 我:笑嘻嘻 客户:那我交话费 我:手机号 客户:给我搞录音 我:不会。不懂。没搞过。 客户:那我交话费 我:手机号。这是电信的啊!!我这是中国移动!! 客户:我不管,我要充话费,充话费是你们的 我:可是这是移动!!中国移动!! 客户:我这是手机号 我:那又如何,这是移动!你是电信!!

Oracle type (自定义类型的使用)

oracle - type   type定义: oracle中自定义数据类型 oracle中有基本的数据类型,如number,varchar2,date,numeric,float....但有时候我们需要特殊的格式, 如将name定义为(firstname,lastname)的形式,我们想把这个作为一个表的一列看待,这时候就要我们自己定义一个数据类型 格式 :create or repla

ORACLE 11g 创建数据库时 Enterprise Manager配置失败的解决办法 无法打开OEM的解决办法

在win7 64位系统下安装oracle11g,在使用Database configuration Assistant创建数据库时,在创建到85%的时候报错,错误如下: 解决办法: 在listener.ora中增加对BlueAeri-PC或ip地址的侦听,具体步骤如下: 1.启动Net Manager,在“监听程序”--Listener下添加一个地址,主机名写计

Oracle Start With关键字

Oracle Start With关键字 前言 旨在记录一些Oracle使用中遇到的各种各样的问题. 同时希望能帮到和我遇到同样问题的人. Start With (树查询) 问题描述: 在数据库中, 有一种比较常见得 设计模式, 层级结构 设计模式, 具体到 Oracle table中, 字段特点如下: ID, DSC, PID; 三个字段, 分别表示 当前标识的 ID(主键), DSC 当

oracle分页和mysql分页

mysql 分页 --查前5 数据select * from table_name limit 0,5 select * from table_name limit 5 --limit关键字的用法:LIMIT [offset,] rows--offset指定要返回的第一行的偏移量,rows第二个指定返回行的最大数目。初始行的偏移量是0(不是1)。   oracle 分页 --查前1-9

如何恢复回收站中已删除/清空的文件

回收站清空后如何恢复已删除的文件?是否可以恢复永久删除的文件?或者最糟糕的是,如果文件直接被删除怎么办?本文将向您展示清空回收站后恢复已删除数据的最佳方法。 回收站清空后如何恢复已删除的文件? “回收站清空后我还能恢复已删除的文件吗?” 答案是肯定的,但是在这种情况下您将需要一个  回收站恢复工具 来从回收站中检索文件: 错误/永久删除回收站或任何数字存储设备中的文件 直接删除的文件/

Detectorn2预训练模型复现:数据准备、训练命令、日志分析与输出目录

Detectorn2预训练模型复现:数据准备、训练命令、日志分析与输出目录 在深度学习项目中,目标检测是一项重要的任务。本文将详细介绍如何使用Detectron2进行目标检测模型的复现训练,涵盖训练数据准备、训练命令、训练日志分析、训练指标以及训练输出目录的各个文件及其作用。特别地,我们将演示在训练过程中出现中断后,如何使用 resume 功能继续训练,并将我们复现的模型与Model Zoo中的