Oracle Redo log 状态及工作原理解析
一码不扫何以扫天下,扫码有福利
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 状态及工作原理解析相关推荐
- MySQL redo log 重做日志 原理 Oracle Redo Log 机制 小结
MySQL-重做日志 redo log -原理 [redo log buffer][redo log file]-原理 目录: 1.重做日志写入过程图 2.相关知识点汇总图 3.redo_log_bu ...
- MSN,QQ,IP Messenger,飞鸽传书,的工作原理解析
MSN,QQ,飞鸽传书,的工作原理解析 http://apps.hi.baidu.com/share/detail/14190263 关键字:MSN,QQ,飞鸽传书,IP Messenger,传文件, ...
- oracle的redolog停止,Oracle Redo Log日志故障处理一则
Oracle Redo Log日志故障处理一则 某日oracle服务器异常重启,当重启oracle数据时,发现redo log文件被损坏, 且这个日志文件是current状态的,导致数据库无法打开; ...
- 2 计算机控制器的组成,组合逻辑控制器组成结构及工作原理解析
组合逻辑控制器组成结构及工作原理解析 按照控制信号产生的方式不同,控制器分为微程序控制器和组合逻辑控制器两类 微程序控制器是将全部控制信号存贮在控制存储器中. 优点:控制信号的逻辑设计.实现及改动都较 ...
- Retrofit2 工作原理解析(一)
Retrofit2 工作原理解析(一) 概述 Retrofit是square公司开源的一款类型安全的http请求框架,用于Java和Android程序.Retrofit可以说是restful风格的一个 ...
- 【深度学习】谷歌大脑EfficientNet的工作原理解析
[深度学习]谷歌大脑EfficientNet的工作原理解析 文章目录 1 知识点准备1.1 卷积后通道数目是怎么变多的1.2 EfficientNet 2 结构2.1 方式2.2 MBConv卷积块2 ...
- 揭开SAP Fiori编程模型规范里注解的神秘面纱 - @OData.publish工作原理解析
Jerry的前一篇文章 揭开SAP Fiori编程模型规范里注解的神秘面纱 - @ObjectModel.readOnly工作原理解析,给大家分享了@ObjectModel.readOnly这个注解对 ...
- 交换机原理_交换机工作原理解析
原文连接:http://www.elecfans.com/dianzichangshi/20171204593673.html 交换机原理 数据传输基于OSI七层模型,而交换机就工作于其第二层,即数据 ...
- 六轴机械臂控制原理图_六轴工业机器人工作原理解析
原标题:六轴工业机器人工作原理解析 常见的六轴关节机器人的机械结构如图1所示: 六个伺服电机直接通过谐波减速器.同步带轮等驱动六个关节轴的旋转,注意观察一.二.三.四轴的结构,关节一至关节四的驱动电机 ...
- iommu 工作原理解析之dma remapping
深入了解iommu系列二:iommu 工作原理解析之dma remapping: https://zhuanlan.zhihu.com/p/479963917
最新文章
- python的服务器、客户端被拒绝访问_python – uWSGI服务器日志…权限被拒绝读取......
- 没想到租房也要会编程?
- ASP.NET中Server与Request对象的方法
- C语言读取load格式文件,求指导,如何用c语言实现读取*.raw格式图像
- windows访问mysql57_windows下 Mysql5.5升级5.7(其实就是安装了两个版本的mysql)
- [转载] Java的访问修饰符、非访问修饰符分类详细总结以及修饰符用途总结
- UI基础--烟花动画
- ms08067 分析与利用
- chmod 755 究竟是什么鬼
- 洛谷-UVA12676 Inverting Huffman(反转树)
- ps修改证件照的底色
- 华为交换机设置端口镜像捕获数据包
- nyoj-1182旅游【三进制状态压缩dp】
- vue-seamless-scroll组件踩坑指南
- AD域帐户密码过期,终端802.1x认证自动重连导致AD账号被锁,员工无法上网、办公怎么办?
- 浏览器上登录堡垒机_堡垒机测评 纽盾、JumpServer、行云管家三款堡垒机产品使用对比...
- scratch项目:自制电子画板(Scratch画笔类积木、事件类积木中消息广播的应用)
- CHECK约束使用自定义函数
- 数据结构与算法A实验六图论---7-3 旅游规划(Dijkstra算法)
- C语言:求1000以内的完数