一码不扫何以扫天下,扫码有福利

Redo Log简介

Oracle的数据库日志称为redo log,所有数据改变都记录redo log,可以用于修复受损的数据库。大型数据库都采用日志。Redo日志是分组的,一个库至少需要两组,默认是三组。每个组内的redo日志称为成员。默认情况下,每个组只有一个成员,这样没有冗余性,可能造成online redo log的丢失,要提高数据的可靠性,应该为每个组至少配置两个成员,并将这两个成员分配到不同的磁盘上。

Redo日志是轮流使用的,一个redo log满了,LGWR会切换到下一组redo log,这种操作称为log switch,做log switch的同时也会做checkpoint,相应的信息还会写入控制文件。

也可以手工执行log switch或checkpoint操作

备注:

LGWR是Oracle的后台进程之一。

LGWR的作用是把日志缓存区的数据从内存写到磁盘的REDO文件里,完成数据库对象创建、更新数据等操作过程的记录。

Redo Log日志状态

Oracle Redo Log日志组通常有四种状态,即unused,inactive,active,current。

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

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

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

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

Redo Log操作

手工执行log switch(手动归档)或checkpoint操作

SQL> alter system switch logfile;
System altered.SQL> alter system checkpoint;
System altered.

查看Oracle数据库当前日志组,以及状态

SQL> select GROUP#,BYTES,MEMBERS,ARCHIVED,STATUS from v$log;

查看 Redo Log日志文件、新增Redo Log日志组以及组成员

SQL> select member from v$logfile;
MEMBER
--------------------------------------------------------------------------------
/home/oracle/oradata/gldb/redo03.log
/home/oracle/oradata/gldb/redo02.log
/home/oracle/oradata/gldb/redo01.log可以在线添加online redo log组:SQL> alter database add logfile group 4 ('/home/oracle/oradata/gldb/redo04.log') size 1m;
Database altered.
SQL> select member from v$logfile;
MEMBER
--------------------------------------------------------------------------------
/home/oracle/oradata/gldb/redo03.log
/home/oracle/oradata/gldb/redo02.log
/home/oracle/oradata/gldb/redo01.log
/home/oracle/oradata/gldb/redo04.log可以在线添加online redo log组成员:SQL> alter database add logfile member '/home/oracle/oradata/gldb/redo01b.log' to group 1;
Database altered.SQL> select member from v$logfile;
MEMBER
--------------------------------------------------------------------------------
/home/oracle/oradata/gldb/redo03.log
/home/oracle/oradata/gldb/redo02.log
/home/oracle/oradata/gldb/redo01.log
/home/oracle/oradata/gldb/redo04.log
/home/oracle/oradata/gldb/redo01b.log在线删除刚才添加的组和组成员:SQL> alter database drop logfile group 4;
Database altered.SQL> alter database drop logfile member '/home/oracle/oradata/gldb/redo01b.log';
Database altered.SQL>  select member from v$logfile;
MEMBER
--------------------------------------------------------------------------------
/home/oracle/oradata/gldb/redo03.log
/home/oracle/oradata/gldb/redo02.log
/home/oracle/oradata/gldb/redo01.log

Redo Log日志状态分析

查看当前日志组状态

SQL> select GROUP#,BYTES,MEMBERS,ARCHIVED,STATUS from v$log;

我们进行手动归档,再看状态

SQL> alter system switch logfile;

发现组一已经从不活跃(inactive)变为运行中(current),组二已经从当前(current)变为了active,组三、四状态不变。说明命令使得日志的写入切换至第一组,第二组正在进行归档和进行必要的数据写入至datafile。待这两项工作完成后再看下图

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

总结

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

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

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

关注微信公众号,获得更多小知识

Oracle Redo log 状态及工作原理解析相关推荐

  1. MySQL redo log 重做日志 原理 Oracle Redo Log 机制 小结

    MySQL-重做日志 redo log -原理 [redo log buffer][redo log file]-原理 目录: 1.重做日志写入过程图 2.相关知识点汇总图 3.redo_log_bu ...

  2. MSN,QQ,IP Messenger,飞鸽传书,的工作原理解析

    MSN,QQ,飞鸽传书,的工作原理解析 http://apps.hi.baidu.com/share/detail/14190263 关键字:MSN,QQ,飞鸽传书,IP Messenger,传文件, ...

  3. oracle的redolog停止,Oracle Redo Log日志故障处理一则

    Oracle Redo Log日志故障处理一则 某日oracle服务器异常重启,当重启oracle数据时,发现redo log文件被损坏, 且这个日志文件是current状态的,导致数据库无法打开; ...

  4. 2 计算机控制器的组成,组合逻辑控制器组成结构及工作原理解析

    组合逻辑控制器组成结构及工作原理解析 按照控制信号产生的方式不同,控制器分为微程序控制器和组合逻辑控制器两类 微程序控制器是将全部控制信号存贮在控制存储器中. 优点:控制信号的逻辑设计.实现及改动都较 ...

  5. Retrofit2 工作原理解析(一)

    Retrofit2 工作原理解析(一) 概述 Retrofit是square公司开源的一款类型安全的http请求框架,用于Java和Android程序.Retrofit可以说是restful风格的一个 ...

  6. 【深度学习】谷歌大脑EfficientNet的工作原理解析

    [深度学习]谷歌大脑EfficientNet的工作原理解析 文章目录 1 知识点准备1.1 卷积后通道数目是怎么变多的1.2 EfficientNet 2 结构2.1 方式2.2 MBConv卷积块2 ...

  7. 揭开SAP Fiori编程模型规范里注解的神秘面纱 - @OData.publish工作原理解析

    Jerry的前一篇文章 揭开SAP Fiori编程模型规范里注解的神秘面纱 - @ObjectModel.readOnly工作原理解析,给大家分享了@ObjectModel.readOnly这个注解对 ...

  8. 交换机原理_交换机工作原理解析

    原文连接:http://www.elecfans.com/dianzichangshi/20171204593673.html 交换机原理 数据传输基于OSI七层模型,而交换机就工作于其第二层,即数据 ...

  9. 六轴机械臂控制原理图_六轴工业机器人工作原理解析

    原标题:六轴工业机器人工作原理解析 常见的六轴关节机器人的机械结构如图1所示: 六个伺服电机直接通过谐波减速器.同步带轮等驱动六个关节轴的旋转,注意观察一.二.三.四轴的结构,关节一至关节四的驱动电机 ...

  10. iommu 工作原理解析之dma remapping

    深入了解iommu系列二:iommu 工作原理解析之dma remapping: https://zhuanlan.zhihu.com/p/479963917

最新文章

  1. python的服务器、客户端被拒绝访问_python – uWSGI服务器日志…权限被拒绝读取......
  2. 没想到租房也要会编程?
  3. ASP.NET中Server与Request对象的方法
  4. C语言读取load格式文件,求指导,如何用c语言实现读取*.raw格式图像
  5. windows访问mysql57_windows下 Mysql5.5升级5.7(其实就是安装了两个版本的mysql)
  6. [转载] Java的访问修饰符、非访问修饰符分类详细总结以及修饰符用途总结
  7. UI基础--烟花动画
  8. ms08067 分析与利用
  9. chmod 755 究竟是什么鬼
  10. 洛谷-UVA12676 Inverting Huffman(反转树)
  11. ps修改证件照的底色
  12. 华为交换机设置端口镜像捕获数据包
  13. nyoj-1182旅游【三进制状态压缩dp】
  14. vue-seamless-scroll组件踩坑指南
  15. AD域帐户密码过期,终端802.1x认证自动重连导致AD账号被锁,员工无法上网、办公怎么办?
  16. 浏览器上登录堡垒机_堡垒机测评 纽盾、JumpServer、行云管家三款堡垒机产品使用对比...
  17. scratch项目:自制电子画板(Scratch画笔类积木、事件类积木中消息广播的应用)
  18. CHECK约束使用自定义函数
  19. 数据结构与算法A实验六图论---7-3 旅游规划(Dijkstra算法)
  20. C语言:求1000以内的完数

热门文章

  1. TU-768与IT180A对比分析报告
  2. Ubuntu更换系统字体
  3. eleme饿了么vue项目随笔,随时更新,想到哪里写到哪里比较凌乱一直更新
  4. 【MODIS数据处理#11】例六:绘制NDVI多年变化趋势空间分布图
  5. php fpm 关闭,php-fpm的启动、关闭、重启
  6. 平头哥RVB2601开发板开发环境CDK
  7. 5-22近期工作总结、下一步工作安排及技术知识
  8. 《jike--微服务架构核心20讲》笔记
  9. 实体消歧、实体统一和指代消歧
  10. 华为充电协议_华为推出超级快充多协议充电器,支持65W USB PD快充输出