重做日志文件

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项目配置logback-spring.xml屏蔽特定路径的日志

《SpringBoot项目配置logback-spring.xml屏蔽特定路径的日志》在SpringBoot项目中,使用logback-spring.xml配置屏蔽特定路径的日志有两种常用方式,文中的... 目录方案一:基础配置(直接关闭目标路径日志)方案二:结合 Spring Profile 按环境屏蔽关

Golang 日志处理和正则处理的操作方法

《Golang日志处理和正则处理的操作方法》:本文主要介绍Golang日志处理和正则处理的操作方法,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考... 目录1、logx日志处理1.1、logx简介1.2、日志初始化与配置1.3、常用方法1.4、配合defer

Apache 高级配置实战之从连接保持到日志分析的完整指南

《Apache高级配置实战之从连接保持到日志分析的完整指南》本文带你从连接保持优化开始,一路走到访问控制和日志管理,最后用AWStats来分析网站数据,对Apache配置日志分析相关知识感兴趣的朋友... 目录Apache 高级配置实战:从连接保持到日志分析的完整指南前言 一、Apache 连接保持 - 性

Nacos日志与Raft的数据清理指南

《Nacos日志与Raft的数据清理指南》随着运行时间的增长,Nacos的日志文件(logs/)和Raft持久化数据(data/protocol/raft/)可能会占用大量磁盘空间,影响系统稳定性,本... 目录引言1. Nacos 日志文件(logs/ 目录)清理1.1 日志文件的作用1.2 是否可以删除

SpringBoot实现文件记录日志及日志文件自动归档和压缩

《SpringBoot实现文件记录日志及日志文件自动归档和压缩》Logback是Java日志框架,通过Logger收集日志并经Appender输出至控制台、文件等,SpringBoot配置logbac... 目录1、什么是Logback2、SpringBoot实现文件记录日志,日志文件自动归档和压缩2.1、

使用nohup和--remove-source-files在后台运行rsync并记录日志方式

《使用nohup和--remove-source-files在后台运行rsync并记录日志方式》:本文主要介绍使用nohup和--remove-source-files在后台运行rsync并记录日... 目录一、什么是 --remove-source-files?二、示例命令三、命令详解1. nohup2.

MySQL精准控制Binlog日志数量的三种方案

《MySQL精准控制Binlog日志数量的三种方案》作为数据库管理员,你是否经常为服务器磁盘爆满而抓狂?Binlog就像数据库的“黑匣子”,默默记录着每一次数据变动,但若放任不管,几天内这些日志文件就... 目录 一招修改配置文件:永久生效的控制术1.定位my.cnf文件2.添加核心参数不重启热更新:高手应

Java程序进程起来了但是不打印日志的原因分析

《Java程序进程起来了但是不打印日志的原因分析》:本文主要介绍Java程序进程起来了但是不打印日志的原因分析,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Java程序进程起来了但是不打印日志的原因1、日志配置问题2、日志文件权限问题3、日志文件路径问题4、程序

Java使用SLF4J记录不同级别日志的示例详解

《Java使用SLF4J记录不同级别日志的示例详解》SLF4J是一个简单的日志门面,它允许在运行时选择不同的日志实现,这篇文章主要为大家详细介绍了如何使用SLF4J记录不同级别日志,感兴趣的可以了解下... 目录一、SLF4J简介二、添加依赖三、配置Logback四、记录不同级别的日志五、总结一、SLF4J

python logging模块详解及其日志定时清理方式

《pythonlogging模块详解及其日志定时清理方式》:本文主要介绍pythonlogging模块详解及其日志定时清理方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地... 目录python logging模块及日志定时清理1.创建logger对象2.logging.basicCo