重做日志文件

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

相关文章

Java 日志中 Marker 的使用示例详解

《Java日志中Marker的使用示例详解》Marker是SLF4J(以及Logback、Log4j2)提供的一个接口,它本质上是一个命名对象,你可以把它想象成一个可以附加到日志语句上的标签或戳... 目录什么是Marker?为什么使用Markejavascriptr?1. 精细化的过滤2. 触发特定操作3

linux查找java项目日志查找报错信息方式

《linux查找java项目日志查找报错信息方式》日志查找定位步骤:进入项目,用tail-f实时跟踪日志,tail-n1000查看末尾1000行,grep搜索关键词或时间,vim内精准查找并高亮定位,... 目录日志查找定位在当前文件里找到报错消息总结日志查找定位1.cd 进入项目2.正常日志 和错误日

SpringBoot日志级别与日志分组详解

《SpringBoot日志级别与日志分组详解》文章介绍了日志级别(ALL至OFF)及其作用,说明SpringBoot默认日志级别为INFO,可通过application.properties调整全局或... 目录日志级别1、级别内容2、调整日志级别调整默认日志级别调整指定类的日志级别项目开发过程中,利用日志

深度剖析SpringBoot日志性能提升的原因与解决

《深度剖析SpringBoot日志性能提升的原因与解决》日志记录本该是辅助工具,却为何成了性能瓶颈,SpringBoot如何用代码彻底破解日志导致的高延迟问题,感兴趣的小伙伴可以跟随小编一起学习一下... 目录前言第一章:日志性能陷阱的底层原理1.1 日志级别的“双刃剑”效应1.2 同步日志的“吞吐量杀手”

java -jar example.jar 产生的日志输出到指定文件的方法

《java-jarexample.jar产生的日志输出到指定文件的方法》这篇文章给大家介绍java-jarexample.jar产生的日志输出到指定文件的方法,本文给大家介绍的非常详细,对大家的... 目录怎么让 Java -jar example.jar 产生的日志输出到指定文件一、方法1:使用重定向1、

c++日志库log4cplus快速入门小结

《c++日志库log4cplus快速入门小结》文章浏览阅读1.1w次,点赞9次,收藏44次。本文介绍Log4cplus,一种适用于C++的线程安全日志记录API,提供灵活的日志管理和配置控制。文章涵盖... 目录简介日志等级配置文件使用关于初始化使用示例总结参考资料简介log4j 用于Java,log4c

Android 缓存日志Logcat导出与分析最佳实践

《Android缓存日志Logcat导出与分析最佳实践》本文全面介绍AndroidLogcat缓存日志的导出与分析方法,涵盖按进程、缓冲区类型及日志级别过滤,自动化工具使用,常见问题解决方案和最佳实... 目录android 缓存日志(Logcat)导出与分析全攻略为什么要导出缓存日志?按需过滤导出1. 按

nginx配置错误日志的实现步骤

《nginx配置错误日志的实现步骤》配置nginx代理过程中,如果出现错误,需要看日志,可以把nginx日志配置出来,以便快速定位日志问题,下面就来介绍一下nginx配置错误日志的实现步骤,感兴趣的可... 目录前言nginx配置错误日志总结前言在配置nginx代理过程中,如果出现错误,需要看日志,可以把

Spring Boot集成/输出/日志级别控制/持久化开发实践

《SpringBoot集成/输出/日志级别控制/持久化开发实践》SpringBoot默认集成Logback,支持灵活日志级别配置(INFO/DEBUG等),输出包含时间戳、级别、类名等信息,并可通过... 目录一、日志概述1.1、Spring Boot日志简介1.2、日志框架与默认配置1.3、日志的核心作用

深度解析Nginx日志分析与499状态码问题解决

《深度解析Nginx日志分析与499状态码问题解决》在Web服务器运维和性能优化过程中,Nginx日志是排查问题的重要依据,本文将围绕Nginx日志分析、499状态码的成因、排查方法及解决方案展开讨论... 目录前言1. Nginx日志基础1.1 Nginx日志存放位置1.2 Nginx日志格式2. 499