首页 > 其他分享 >在线重做日志丢失后的恢复

在线重做日志丢失后的恢复

时间:2024-09-12 11:53:49浏览次数:11  
标签:opt O19C log oradata 丢失 SQL oracle 日志 重做

  1. 丢失多路复用日志组成员的恢复
		a. 准备数据
		#创建一个新的日志组
		SQL> select group#, member from v$logfile;
		    GROUP#    MEMBER
		-----------------------------------------------
			 3   /opt/oracle/oradata/O19C/redo03.log
			 2   /opt/oracle/oradata/O19C/redo02.log
			 1   /opt/oracle/oradata/O19C/redo01.log
			 
		alter database add logfile group 4('/opt/oracle/oradata/O19C/redo04_1.log','/opt/oracle/oradata/O19C/redo04_2.log') size 50M;
		
		SQL> select group#,status from v$log;
		    GROUP# STATUS
		---------- --------------------------------
			 1 INACTIVE
			 2 CURRENT
			 3 UNUSED
			 4 UNUSED
		
		#切换日志确保新添加的日志组被使用
		SQL> alter system switch logfile;
		SQL> /
		SQL> select group#,status from v$log;
		    GROUP# STATUS
		---------- --------------------------------
			 1 INACTIVE
			 2 ACTIVE
			 3 ACTIVE
			 4 CURRENT
		b. 删除日志组4的一个文件,模拟故障
		[oracle@oracle19c O19C]$ rm -rf redo04_1.log 
		
		SQL> alter system switch logfile;
		SQL> /
		SQL> /
		SQL> /
		SQL> /
		
		
		
		2024-09-12T11:12:42.396073+08:00
		Errors in file /opt/oracle/diag/rdbms/o19c/o19c/trace/o19c_arc0_6818.trc:
		ORA-00313: open failed for members of log group 4 of thread 1
		ORA-00312: online log 4 thread 1: '/opt/oracle/oradata/O19C/redo04_1.log'
		ORA-27041: unable to open file
		Linux-x86_64 Error: 2: No such file or directory
		Additional information: 3
		
		c. 恢复
		SQL>  select group#,status from v$log;   #如果组4当前再使用,不能进行恢复操作
		    GROUP# STATUS
		---------- --------------------------------
			 1 CURRENT
			 2 INACTIVE
			 3 INACTIVE
			 4 INACTIVE
		
		SQL> alter database drop logfile member '/opt/oracle/oradata/O19C/redo04_1.log';
		SQL> alter database  add logfile member '/opt/oracle/oradata/O19C/redo04_1.log' to group 4;
  1. 在线重做日志组所有成员都丢失后的恢复
		a. 丢失inactive在线重做日志组
		SQL>  select group#,status,archived from v$log;
		    GROUP# STATUS			    ARCHIV
		---------- -------------------------------- ------
			 1 ACTIVE			    YES
			 2 CURRENT			    NO
			 3 INACTIVE			    YES
			 4 INACTIVE			    YES
		
		SQL> host rm /opt/oracle/oradata/O19C/redo03.log 
		SQL> host ls /opt/oracle/oradata/O19C/redo03.log
		ls: cannot access /opt/oracle/oradata/O19C/redo03.log: No such file or directory
		
		SQL> alter database clear logfile group 3;
		#如果inactive的日志组没有被归档,则使用命令
		alter database clear unarchived logfile group 3;
		SQL> host ls /opt/oracle/oradata/O19C/redo03.log
		/opt/oracle/oradata/O19C/redo03.log
		b. 丢失active或者current在线重做日志组
		SQL> select group#,status,archived from v$log;
		    GROUP# STATUS			    ARCHIV
		---------- -------------------------------- ------
			 1 CURRENT			    NO
			 2 INACTIVE			    YES
			 3 INACTIVE			    YES
			 4 INACTIVE			    YES
		
		SQL> host rm /opt/oracle/oradata/O19C/redo01.log
		SQL> host ls /opt/oracle/oradata/O19C/redo01.log
		ls: cannot access /opt/oracle/oradata/O19C/redo01.log: No such file or directory
		
		SQL> alter database clear logfile group 1;
		alter database clear logfile group 1
		*
		ERROR at line 1:
		ORA-01624: log 1 needed for crash recovery of instance o19c (thread 1)
		ORA-00312: online log 1 thread 1: '/opt/oracle/oradata/O19C/redo01.log'
		
		SQL> alter system checkpoint;
		SQL> select group#,status,archived from v$log;
		    GROUP# STATUS			    ARCHIV
		---------- -------------------------------- ------
			 1 CURRENT			    NO
			 2 INACTIVE			    YES
			 3 INACTIVE			    YES
			 4 INACTIVE			    YES
		
		SQL> alter system switch logfile;
		SQL> select group#,status,archived from v$log;
		
		    GROUP# STATUS			    ARCHIV
		---------- -------------------------------- ------
			 1 ACTIVE			    NO
			 2 CURRENT			    NO
			 3 INACTIVE			    YES
			 4 INACTIVE			    YES
		
		
		SQL> alter database clear unarchived logfile group 1;
		SQL> host ls /opt/oracle/oradata/O19C/redo01.log
		/opt/oracle/oradata/O19C/redo01.log
		
		c. 丢失多个重做日志组
		如果丢失了多个在线重做日志组,那么恢复的方法就是先从最难恢复的日志开始,从难到易的顺序如下:
			§ current在线重做日志
			§ active在线重做日志
			§ unarchived在线重做日志
			§ inactive在线重做日志

标签:opt,O19C,log,oradata,丢失,SQL,oracle,日志,重做
From: https://blog.51cto.com/ablewang/11990462

相关文章

  • linux操作系统日志小知识
    Linux系统中的日志文件是系统、应用程序和各种服务运行状态的重要记录。它们对于系统管理员来说至关重要,因为它们可以帮助诊断问题、监控系统性能和安全问题。以下是Linux日志文件的一些基本概念和介绍:1.**日志文件的位置**:  -`/var/log`:这是大多数Linux发行版存储......
  • grep和zgrep命令的简单使用-可以查看日志内容
    在Linux系统中,grep和zgrep是两个非常有用的文本搜索工具,它们用于搜索文件中的文本模式:grepgrep是一个强大的文本搜索工具,用于搜索文件中匹配特定模式的行。它的基本语法如下:grep[选项]'模式'文件名基本用法:grep'模式'文件名例如,搜索文件example.txt中......
  • 机械学习—零基础学习日志(Python做数据分析04)
    列表与元组对比,列表的长度可变、内容可以被修改。你可以用方括号定义,或用list函数:操作列表:增添:append方法,insert方法,list.extend(list)删除:del方法,pop方法,remove方法判断元素是否在列表内:in方法排序:sorted(list),list.sort()。二分搜索和维护已排序的列表bisect模块支......
  • 开学日志3
    今天复习了一下方法的一些内容:publicclassCalculator{publicintadd(inta,intb){returna+b;}}静态方法静态方法属于类,而不属于类的实例。它们可以通过类名直接调用,而不需要创建类的实例。静态方法不能访问实例变量和实例方法。publicclassMathUtils{pub......
  • GC日志详细解析,非常详细GC(20) Pause Young (Normal) (G1 Evacuation Pause)
    在Java虚拟机(JVM)中,垃圾收集(GC)是内存管理的关键部分。分析GC日志可以帮助我们了解应用程序的内存使用情况和GC性能。以下是对一段GC日志的详细解析,涵盖了GC的不同阶段和相关信息。GC日志示例[16636.674s][info][gc,start]GC(20)PauseYoung(Normal)(G1Evacuati......
  • 打包某个文件夹下面的日志文件
    有这样一个需求,需要把 /log 目录下的所有日志都压缩在当前文件,然后还需要按照一定的要求给压缩文件命名;然后再把压缩文件移动到指定目录。这是shell脚本:#!/bin/bash#获取当前时间,并格式化为YYYYMMDD-HHMMSStimestamp=$(date+"%Y%m%d-%H%M%S")#定义日......
  • 项目日志——日志器模块的扩展,建造者类的设计、实现、测试
    文章目录建造者模式设计实现测试建造者模式建造者模式就是为了方便对象的构造,当零部件的构建和组装过于复杂时,就需要建造者模式来帮帮忙这里我们的日志器很适合,但是也没有特别复杂,所以可以对整个设计模式进行简化,不需要指挥者,直接使用建造者进行组装因为指挥者主......
  • 2024/9/11日 日志
    今天学习了离散数学集合的部分内容,并初步认识了数据结构中影响程序的时空,即时间复杂度和空间复杂度。对时间复杂度的计算有了掌握和了解。即1.用常数1取代运行时间中的所有加法常数。2.在修改后的运行次数函数中,只保留最高阶次。3.如果最高阶项存在且不是1,则取出与这个项......
  • Logstash 配置Java日志格式的方法
    Logstash是用于日志收集的开源工具,通常与Elasticsearch和Kibana一起使用,形成ELKStack(现在称为ElasticStack)。Logstash非常灵活,可以通过配置文件(通常是.conf文件)来定义数据的输入、处理和输出。对于处理Java日志,一个常见的场景是解析Java应用生成的日志文件(如使用......
  • logging模块用于记录日志的标准库
    日志级别是监控和调试软件系统的关键组成部分,它们帮助开发者和运维人员区分不同严重程度的信息,从而更有效地响应和解决问题。以下是日志级别的详细说明及如何在Python中使用它们的示例。日志级别分类日志级别按严重程度从低到高排序如下:DEBUG:用于记录详细的调试信息,通常在开......