重做日志文件

2024-05-03 12:18
文章标签 日志 重做

本文主要是介绍重做日志文件,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

原文地址:点击打开链接

概述

特征:

记录对数据所做的所有改变

至少需要两个组(重做日志文件是以循环方式写入的)

重做日志文件是以循环的方式使用

作用:发生介质故障,重做日志文件提供恢复机制;重做日志文件用来在例程失败等情况下恢复尚未写入数据文件的提交数据,重做日志文件只用于恢复

日志的切换:一旦当前联机重做日志文件组被写满,LGWR就开始写入下一个组,这成为日志的切换

强制切换,使用语句:alter system switch logfile

切换到哪个日志哪个日志就处于current状态,使用select group#status from v$log查看;

强制执行检查点,使用语句alter system checkpoint;

打开一个监控日志tail –f $ORACLE_HOME/admin/bdump/alert_

 

重做日志文件的管理

1.添加重做日志文件组

数据库创建后,可以使用如下添加一个日志文件组

SQL> alter database add logfile group 
  2  ('/opt/oracle/oradata/ORCL/onlinelog/log01.log',
  3  '/opt/oracle/oradata/ORCL/onlinelog/log02.log') size 10M;

Database altered

分配给每个重做日志文件的初始空间至少为4M

 

2.添加日志文件组成员

SQL> alter database add logfile member '/opt/oracle/oradata/ORCL/onlinelog/log03.log' to group 1;

Database altered.

不需要分配大小,新成员的大小由组中已有成员大小决定

3.改变重做日志文件组成员文件的名称或位置

注意:只能修改处于inactive或者unused状态的重做日志文件组的成员的名称或位置,数据库要启动在mount状态下

(1)检查要修改的日志文件所在的日志文件组的状态

SQL> select group#,status from v$log;

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

如果不是处于inactive或者unused状态则需要进行手动切换

SQL> alter system switch logfile;

System altered.

(2)操作系统上重命名日志文件或改变位置

[oracle@localhost onlinelog]$ mv log01.log log001.log

(3)执行下面语句(数据库不能处于open状态

SQL> alter database rename file '/opt/oracle/oradata/ORCL/onlinelog/log01.log' to '/opt/oracle/oradata/ORCL/onlinelog/log001.log';

Database altered.

4.删除重做日志文件组成员

限制:

组中的最后一个成员不能删除;

所在组处于current不能删除;

SQL> alter database drop logfile member '/opt/oracle/oradata/ORCL/onlinelog/log002.log';

这样删除并没有删除操作系统上的日子文件,只是更新了控制文件

5.删除重做日志文件组

SQL> select group#,status from v$log;

    GROUP# STATUS
---------- ----------------
         1 INACTIVE
         2 ACTIVE
         3 CURRENT
         4 ACTIVE

 

SQL> alter database drop logfile group 1;

Database altered.

删除重做日志文件组的限制:

一个数据库至少需要两个重做日志文件

正在处于归档模式下的不能删除,即处于active状态的

只能删除处于inactive或者unused状态的日志文件组

也是更新控制文件了,并没有真正的从操作系统上删除

6.重做日志文件切换

当LGWR进程结束对当前重做日志文件组的使用,开始写入下一个重做日子文件组的时候,称为发生了一次“日志切换”

通常,只有当前的重做日志文件写满后才发生日志的切换

参数archive_lag_target 控制日志切换的时间间隔

手动切换使用下面的语句

SQL> alter system switch logfile;

System altered.

7.清除重做日志文件组

SQL> select group#,status from v$log;

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

SQL> alter database clear logfile group 2
  2  ;

Database altered.

SQL> select group#,status from v$log;

    GROUP# STATUS
---------- ----------------
         2 UNUSED
         3 INACTIVE
         4 CURRENT

清除重做日志文件就是将重做日志文件中的内容全部清除,并不删除这个文件,还可以使用!相当于删除这个日志文件组,然后进行了一次重建。

SQL> select group#,status from v$log;

    GROUP# STATUS
---------- ----------------
         2 CURRENT
         3 INACTIVE
         4 ACTIVE

SQL> alter database clear logfile group 4;
alter database clear logfile group 4
*
ERROR at line 1:
ORA-01624: log 4 needed for crash recovery of instance orcl (thread 1)
ORA-00312: online log 4 thread 1: '/opt/oracle/oradata/ORCL/onlinelog/log001.log'
ORA-00312: online log 4 thread 1: '/opt/oracle/oradata/ORCL/onlinelog/log02.log'
ORA-00312: online log 4 thread 1: '/opt/oracle/oradata/ORCL/onlinelog/log002.log'


SQL> alter database clear unarchived logfile group 4;

Database altered.

上述说明,如果清空的日志文件组还没有归档,即处于active状态的日志组;则必须使用unarchived子句,以避免这个日志文件组进行归档!

8.查看重做日志文件信息

v$log:查询重做日志文件组的信息

v$logfile:查询日志文件的信息

v$og_history

 

重做日志文件的4种状态:

·           inactive:表示实例恢复已不再需要这组联机重做日志组了。

·            active:表示该组是活动的但不是当前组,实例恢复时需要这组日志。如正在归档

·            current:表示该组日志是当前组,该联机重做日志组是活动的。当前正在被LGWR写入。

·           unused:表示该日志组从未写过,是重做日志刚刚添加到状态。

 

重做日志文件的状态有3种:

valid:当期可用的重做日志文件

invalid:当前不可用的重做日志文件

stale:产生错误的重做日志文件


这篇关于重做日志文件的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

Spring Boot整合log4j2日志配置的详细教程

《SpringBoot整合log4j2日志配置的详细教程》:本文主要介绍SpringBoot项目中整合Log4j2日志框架的步骤和配置,包括常用日志框架的比较、配置参数介绍、Log4j2配置详解... 目录前言一、常用日志框架二、配置参数介绍1. 日志级别2. 输出形式3. 日志格式3.1 PatternL

开启mysql的binlog日志步骤详解

《开启mysql的binlog日志步骤详解》:本文主要介绍MySQL5.7版本中二进制日志(bin_log)的配置和使用,文中通过图文及代码介绍的非常详细,需要的朋友可以参考下... 目录1.查看是否开启bin_log2.数据库会把日志放进logs目录中3.查看log日志总结 mysql版本5.71.查看

C++中实现调试日志输出

《C++中实现调试日志输出》在C++编程中,调试日志对于定位问题和优化代码至关重要,本文将介绍几种常用的调试日志输出方法,并教你如何在日志中添加时间戳,希望对大家有所帮助... 目录1. 使用 #ifdef _DEBUG 宏2. 加入时间戳:精确到毫秒3.Windows 和 MFC 中的调试日志方法MFC

SpringBoot如何使用TraceId日志链路追踪

《SpringBoot如何使用TraceId日志链路追踪》文章介绍了如何使用TraceId进行日志链路追踪,通过在日志中添加TraceId关键字,可以将同一次业务调用链上的日志串起来,本文通过实例代码... 目录项目场景:实现步骤1、pom.XML 依赖2、整合logback,打印日志,logback-sp

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

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

我在移动打工的日志

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

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

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

SSM项目使用AOP技术进行日志记录

本步骤只记录完成切面所需的必要代码 本人开发中遇到的问题: 切面一直切不进去,最后发现需要在springMVC的核心配置文件中中开启注解驱动才可以,只在spring的核心配置文件中开启是不会在web项目中生效的。 之后按照下面的代码进行配置,然后前端在访问controller层中的路径时即可观察到日志已经被正常记录到数据库,代码中有部分注释,看不懂的可以参照注释。接下来进入正题 1、导入m

多数据源的事务处理总是打印很多无用的log日志

之前做了一个项目,需要用到多数据源以及事务处理,在使用事务处理,服务器总是打印很多关于事务处理的log日志(com.atomikos.logging.Slf4jLogger),但是我们根本不会用到这些log日志,反而使得查询一些有用的log日志变得困难。那要如何屏蔽这些log日志呢? 之前的项目是提高项目打印log日志的级别,后来觉得这样治标不治本。 现在有一个更好的方法: 我使用的是log

android两种日志获取log4j

android   log4j 加载日志使用方法; 先上图: 有两种方式: 1:直接使用架包 加载(两个都要使用); 架包:android-logging-log4j-1.0.3.jar 、log4j-1.2.15.jar  (说明:也可以使用架包:log4j-1.2.17.jar)  2:对架包输入日志的二次封装使用; 1:直接使用 log4j 日志框架获取日志信息: A:配置 日志 文