重做日志文件

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

相关文章

SpringBoot日志配置SLF4J和Logback的方法实现

《SpringBoot日志配置SLF4J和Logback的方法实现》日志记录是不可或缺的一部分,本文主要介绍了SpringBoot日志配置SLF4J和Logback的方法实现,文中通过示例代码介绍的非... 目录一、前言二、案例一:初识日志三、案例二:使用Lombok输出日志四、案例三:配置Logback一

golang 日志log与logrus示例详解

《golang日志log与logrus示例详解》log是Go语言标准库中一个简单的日志库,本文给大家介绍golang日志log与logrus示例详解,感兴趣的朋友一起看看吧... 目录一、Go 标准库 log 详解1. 功能特点2. 常用函数3. 示例代码4. 优势和局限二、第三方库 logrus 详解1.

如何自定义Nginx JSON日志格式配置

《如何自定义NginxJSON日志格式配置》Nginx作为最流行的Web服务器之一,其灵活的日志配置能力允许我们根据需求定制日志格式,本文将详细介绍如何配置Nginx以JSON格式记录访问日志,这种... 目录前言为什么选择jsON格式日志?配置步骤详解1. 安装Nginx服务2. 自定义JSON日志格式各

SpringBoot项目使用MDC给日志增加唯一标识的实现步骤

《SpringBoot项目使用MDC给日志增加唯一标识的实现步骤》本文介绍了如何在SpringBoot项目中使用MDC(MappedDiagnosticContext)为日志增加唯一标识,以便于日... 目录【Java】SpringBoot项目使用MDC给日志增加唯一标识,方便日志追踪1.日志效果2.实现步

SQL Server清除日志文件ERRORLOG和删除tempdb.mdf

《SQLServer清除日志文件ERRORLOG和删除tempdb.mdf》数据库再使用一段时间后,日志文件会增大,特别是在磁盘容量不足的情况下,更是需要缩减,以下为缩减方法:如果可以停止SQLSe... 目录缩减 ERRORLOG 文件(停止服务后)停止 SQL Server 服务:找到错误日志文件:删除

grom设置全局日志实现执行并打印sql语句

《grom设置全局日志实现执行并打印sql语句》本文主要介绍了grom设置全局日志实现执行并打印sql语句,包括设置日志级别、实现自定义Logger接口以及如何使用GORM的默认logger,通过这些... 目录gorm中的自定义日志gorm中日志的其他操作日志级别Debug自定义 Loggergorm中的

SpringBoot项目注入 traceId 追踪整个请求的日志链路(过程详解)

《SpringBoot项目注入traceId追踪整个请求的日志链路(过程详解)》本文介绍了如何在单体SpringBoot项目中通过手动实现过滤器或拦截器来注入traceId,以追踪整个请求的日志链... SpringBoot项目注入 traceId 来追踪整个请求的日志链路,有了 traceId, 我们在排

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