Oracle重做日志组状态及切换解析

Oracle重做日志(redo log)是用来记录操作条目,用于数据库数据恢复。为了提高效率,oracle通常建议设置三组redo log。

一.概述

oracle重做日志组通常有四种状态,即unused,inactive,active,current。

unused通常指从未被使用的日志组,即新添加的日志组。

current状态为LGWR进程正把redo log buffer的日志写进日志组中。

active为刚刚完成日志切换后的状态,此时该日志组中提交的事务引起的数据改变还没有完全从DB buffer cache写入到数据文件中,因此该日志组还不能被覆盖,并且待完全写入后变为inactive状态。如果数据库为归档模式,那么是在该状态下完成归档的。

inactive状态的日志可以被覆盖,可以允许写入日志。如果是在归档模式下,那么此阶段证明归档已经完成。

二.实验

本次实验以开启归档模式为例:

日志组为三组,状态分别为inactive,inactive,current。如图:

手动归档后,观察发现组1的状态变为current,组3的状态变为active,组2的状态不变 。如下图:

说明当前写入的日志组为组1,组3正在进行归档和进行必要的数据写入至datafile。待这两项工作完成后,再看如下图:

说明组3已经完成了归档,可以允许下一次写入了。在非归档模式下,组3的状态也能变成inactive,说明完成了数据从DB BUFFER CACHE写入至DB files。

三、总结

上述实验很好的说明了oracle日志组在整个生命周期所具有的状态。当然没有看到unused状态,这种状态是当日志组刚新添到数据库后的状态,这种操作在生产环境中很少,所以本次实验没有看到这种状态。

另外有人会认为在手动日志切换时为什么使用命令alter system archive log current。这里也做一个说明。

两组命令最后的效果一样。alter system switch logfile是不等归档完成就进行switch logfile操作,速度快,尤其在非归档模式下适用,对当前实例生效。而alter system archive log current要等待归档完成才操作,对所有实例生效。

时间: 2024-08-06 00:46:35

Oracle重做日志组状态及切换解析的相关文章

Oracle重做日志文件

http://blog.csdn.net/leshami/article/details/5749556 一.Oracle中的几类日志文件 Redo log files      -->联机重做日志 Archive log files   -->归档日志 Alert log files     -->告警日志 Trace files         -->跟踪日志 user_dump_dest          -->用户跟踪日志 backupground_dump_dest

oracle 重做日志

原创转载请注明出处 重做日志:记录数据库数据的变化(DDL,DML) 重做日志组:由一个或者多个完全一样的重做日志文件组成,如果一个日志组有多个日志文件,后台进程LGWR会把事务变化写到同一个日志组的多个文件中. 每个数据库最少包括2个日志组,日志组可以循环使用. 重做日志成员:日志组的每个文件都称为日志成员. 工作原理:当用户执行DDL或者DML操作的时候,Oracle进程会把操作记录(重做记录)写到重做日志高速缓冲区中,最后有后台进程LGWR写到重做日志中. LGWR在以下情况会进行写入操作

oracle 重做日志文件无法自动创建保存问题Thread 1 cannot allocate new log, sequence 233678

Mon Nov 26 09:10:16 2018 Thread 1 cannot allocate new log, sequence 233678 Checkpoint not complete Current log# 1 seq# 233677 mem# 0: D:\APP\ADMINISTRATOR\ORADATA\ORCL\REDO01.LOG Thread 1 advanced to log sequence 233678 (LGWR switch) Current log# 2 s

Oracle重做日志恢复数据模拟实验

一 系统环境: 1.操作系统:oracle Linux 5.6 2.数据库: Oracle 11g 二 Oracle 重做日志的作用: [模拟介质恢复] 1. 关闭数据库归档模式: [[email protected] ~]$ sqlplus /nolog SQL*Plus: Release 11.2.0.1.0 Production on Mon Feb 6 23:49:30 2017 Copyright (c) 1982, 2009, Oracle. All rights reserved.

Oracle重做日志管理与深入解析_超越OCP精通Oracle视频课程培训14

oracle视频教程目标 Oracle视频教程,风哥本套oracle教程培训学习oracle数据库Redo log日志文件作用与概念解析,重做日志日常维护与优化优化,Redo Log的增加/删除/镜像,DDL/DML操作与REDO的关系,详解update.truncate.select的redo过程,oracle redo转储日志文件深入分析等日常管理与维护. 适用人群 IT相关从业人员.Oracle数据库技术人员.想加工资的.想升职的都可以. 视频在线学习地址: http://edu.51ct

[转] 增大oracle重做日志的大小

重做日志(redo log)是由LGWR来进行控制的.Oracle对于DML操作数据的时候,并不会马上去修改数据块,而是产出redo记录,并记录到联机的redo log里,当redo Log用满,或者启动全局checkpoint,也或者alter system switch logfile; 这时都会切换redo log group,(如果redo log状态为current,是当前redo log,如果是inactive就是已经有DBWN写入数据块,Inactive还没有写入)redo log

ORACLE重做日志小结

1.Redo log特点 重做日志以磁盘I/O为主,将数据库操作记录到日志文件.(磁盘I\O性能有可能成为瓶颈) 每个实例只有一个活动的LGWR(log writer)进程,至少有两个日志组(logfile group),每个日志组至少一个日志文件,同一日志组多个日志文件内容相同,互为镜像. 当一个日志组写满时,LGWR自动切换至下一个日志组,覆盖日志文件内容,继续写入.(频繁的日志切换可能影响性能) 当切换到新的日志组时,如果DBWR(db writer)尚未将所有修改写入数据文件,LGWR将

Oracle重做日志REDO

什么是重做? 重做日志包含所有数据产生的历史改变记录. 重做日志目的是保证数据的安全,如果数据因特殊原因没有写到磁盘上,可以通过重做日志来恢复. 重做日志文件通常用于 恢复(实例恢复和介质恢复) 日志挖掘:可以通过oracle工具分析日志里面的内容 流:通过分析redo,从redo获取实时数据,应用到远程数据库. 数据库产生的每个改动: 写入数据库缓存之前,先写入重做日志--内存 写入数据文件之前先写入日志文件 ----数据文件 内存里操作,重做日志的内存区叫Redo buffer 当提交后,日

修改oracle重做日志文件大小

创建3个新的日志组 SQL> ALTER DATABASE ADD LOGFILE GROUP 4 ('/u01/app/oracle/oradata/orcl/redo06.log') SIZE 500M; SQL> ALTER DATABASE ADD LOGFILE GROUP 5 ('/u01/app/oracle/oradata/orcl/redo05.log') SIZE 500M; SQL> ALTER DATABASE ADD LOGFILE GROUP 6 ('/u01