为什么要引入LGWR后台进程和redo log buffer

如果使用前台进程来将redo的信息写入到redo日志文件组中,那么会导致并发的前台进程对redo日志文件组的争用,从而使用后台进程LGWR之后,不会产生前台程序的争用情况

引入redo log buffer是为了提高数据库的性能,从而前台进程只要将生成的redo信息写入到redo log buffer中

oracle在提高性能的方面,将redo的block块大小和操作系统的块大小设置为一样大,从而不会产生碎块的问题





LGWR将redo log buffer中的内容写入到redo日志文件组中,从而LGWR的触发条件如下:

1、当事物进行commit的时候

2、当redo log buffer中的内容到达1M的时候

3、当达到redo log buffer中的内容的1/3的时候

4、每隔3S

当事物进行commit的时候触发LGWR写操作,是为了确保当用户提交事物的时候,如果数据库发生了故障不会丢失数据,此时redo日志组的信息已经写入到redo log files中,从而数据不会产生丢失

当内容达到1M或者是内容达到1/3或者3S的时候触发,是为了防止当数据库的事物提交的很少,但是每次都产生大量的redo日志信息的时候,防止redo log buffer中的信息积压,从而每次定时的唤醒LGWR进程,将日志信息写入





在LGWR写的时候,会发生一个事件,那就是log file sync等待时间,可能发生为两种情况:

1、当前台进程产生了redo日志时,redo log buffer中的内容满了,从而没有空间来保存新的生成的redo信息,这个时候前台进程必须等待LGWR将buffer中的内容写入到redo日志文件组中,从而发生的等待

2、当用户提交事物时,等待LGWR将日志信息写入到日志文件组中,此时也会发生log file sync等待事件

总的来说:log file sync等待事件就是等待LGWR将redo log buffer中的内容写入到redo日志文件组中发生的等待事件





如何来解决大量的log file sync事件

1、增加redo log buffer的大小,在此时可能需要调整_log_io_size的大小,防止大量的redo信息的堆压

2、将redo日志文件放到IO性能比较好的磁盘上,从而增加LGWR写日志的速度





日志切换

日志切换是一个昂贵的操作,alter system switch logfile;

redo文件二的更多相关文章

  1. 【恢复】 Redo文件丢失的恢复

    第一章 Redo文件丢失的恢复 1.1  online redolog file 丢失 联机Redo日志是Oracle数据库中比较核心的文件,当Redo日志文件异常之后,数据库就无法正常启动,而且有丢 ...

  2. 简单记录一次REDO文件损坏报错 ORA-00333重做日志读取块出错

    一.故障描写叙述 首先是实例恢复须要用到的REDO文件损坏 二.解决方法 1.对于非当前REDO或者当前REDO可是无活动事务使用下面CLEAR命令: 用CLEAR命令重建该日志文件SQL>al ...

  3. 转储oracle的redo文件

    1.确定当前使用的redo文件 SQL> select member from v$logfile where group# = ( select group# from v$log where ...

  4. redo文件一

    redo log files and redo log buffer redo log files的作用的是确保数据库崩溃之后能正确的恢复数据库,恢复数据库到一,致性的状态 redo log file ...

  5. 重建redo文件

    需求背景 由于前期安装oracle时redo文件大小或者路径规划不合理需要进行修改,以便满足性能测试要求.redo文件规划大小建议与生产环境一致. 重做日志相关数据字典 1.v$log  记录数据库中 ...

  6. redo文件四

    v$session_wait 用来查询redo buffer的空间信息 select sid,event,seconds_in_wait,state from v$session_wait where ...

  7. redo文件三

    switch logfile是一种昂贵的操作,在进行日志切换的时候,是不允许生成新的redo信息 在前台进程生成redo日志信息的时候,此时redo buffer已经分配了空间,并且在当前的redo日 ...

  8. HTML5 文件域+FileReader 读取文件(二)

    一.读取文本文件内容,指定字符编码 <div class="container"> <!--文本文件验证--> <input type="f ...

  9. linux(八)linux系统中查找文件二

    前面介绍的是find命令,我们发现一个find命令居然有那么多的命令,我看到都要晕了,不管没有关系,加油.相信自己! 一.grep命令 1.1.作用 Linux系统中grep命令是一种强大的文本搜索工 ...

随机推荐

  1. React用JS 模拟动画介绍

    一. <!DOCTYPE html> <html lang="zh-cn"> <head> <meta charset="UTF ...

  2. 2014--9=17 软工二班 MyEclipse blue==3

    package cn.rwkj.test; import java.io.IOException; import java.io.InputStream; import java.net.Server ...

  3. Yii2 基于RESTful架构的 advanced版API接口开发 配置、实现、测试

    环境配置: 开启服务器伪静态 本处以apache为例,查看apache的conf目录下httpd.conf,找到下面的代码 LoadModule rewrite_module modules/mod_ ...

  4. JDBC学习总结(五)

    取得数据库连接是件耗时间及资源的动作,尽量利用已打开的连接,也就是重复利用取得的Connection实例,是改善数据库连接性能的一个方式,而采用连接池是基本做法.由于取得Connection的方式根据 ...

  5. 写给系统管理员的25个PHP安全实践

    PHP是广泛使用的开源服务端脚本语言.通过HTTP或HTTPS协议,Apache Web服务允许用户访问文件或内容.服务端脚本语言的错误配置会导致各种问题.因此,PHP应该小心使用.以下是为系统管理员 ...

  6. netty websocket协议开发

    websocket的好处我们就不用多说了,就是用于解决长连接.服务推送等需要的一种技术. 以下我们来看一个例子: package com.ming.netty.http.websocket; impo ...

  7. 字符设备 register_chrdev_region()、alloc_chrdev_region() 和 register_chrdev()

    1. 字符设备结构体 内核中所有已分配的字符设备编号都记录在一个名为 chrdevs 散列表里.该散列表中的每一个元素是一个 char_device_struct 结构,它的定义如下: static ...

  8. C#获取一个文件的扩展名

    C#获取一个文件的扩展名System.IO.Path.GetExtension( "文件名 ");ChangeExtension   更改路径字符串的扩展名. Combine   ...

  9. Android线性布局(Linear Layout)

    Android线性布局(Linear Layout) LinearLayout是一个view组(view group),其包含的所有子view都以一个方向排列,垂直或是水平方向.我们能够用androi ...

  10. chrome浏览器无法设置打开特定网页

    最近chrome浏览器更新后,发现以前设置的启动浏览器“重上次停下的地方继续”功能消失了. 当我点击设置网页时,会出现如上提示. 后来有同事给了如下一个连接,里面说到这个是公司的超级管理员搞的,他定义 ...