log file parallel write表示等待 LGWR 向操作系统请求 I/O 开始直到完成 I/O。这种事件发生通常表示日志文件发生了I/O 竞争或者文件所在的驱动器较慢。这说明这种等待与日志切换、检查点的执行都没有关系,而是直接反映了LGWR 的写能力,因此即使日志文件组数过少、文件偏小,也与目前的等待事件没有直接关系,所以增加日志组数、日志文件大小并不会有助于解决现在的性能问题。

那么现在怎么解决这个问题呢?这个问题的直接原因主要跟LGWR 的写能力有关,但是单纯的LGWR 进程的写能力不可能像DBWR 进程那样可以通过多个写进程来提高,所以这时候要考虑的是如何在单个LGWR 进程的前提下让写的日志量不超过当前的LGWR 写能力。这个可以从两个方面来考虑,一方面要考虑是否在应用中产生了太多无意义的重做日志,导致日志产生量太大,从而使日志的产生量超出了LGWR 的写能力,如果是这样,那么考虑通过一些方法限制重做日志的产生。另一方面也要考虑如果日志产生量确定的情况下,如何让LGWR 进程写日志能够写得更多更快,这主要取决于两个方面,一个是LGWR 在写日志的时候是否发生了I/O 竞争,另一方面是重做日志文件所在的磁盘速度是否过低,如果是竞争引起的,移动重做日志文件到其他的磁盘上,如果是磁盘速度引起的,那么选择高速磁盘存放重做日志。

通过前面的分析发现,主要的等待事件是与LGWR 的写能力相关的,而LGWR 写的重做日志都是由用户执行的DML 语句产生的,那么现在就应该进一步分析,搞清楚问题到底是哪些会话中执行的哪条SQL 语句引起的。首先需要找到哪些会话产生了大量的log file parallel write 等待事件,为了找到答案,就需要查看另外一些与会话相关的动态性能视图,会话级的视图有v$session_event 和 v$session_wait,当然,由于要找的是当前发生了大量log file parallel write 等待事件的会话,所以真正需要的视图应该是反映了当前会话等待信息的v$session_wait 视图,通过这个视图可以找到是由哪些会话导致的这个等待。

在这里,将通过查询v$session_wait 来得到产生log file parallel write 等待事件最多的那些

会话。当然,前面说过这个视图中的P1、P2 和P3 字段都是非常有用的字段,不过在这个案例中,

对于log file parallel write 这个事件来说,这几个字段是用不上的。

SELECT SID,

EVENT "Wait Event",

STATE "Wait Stat",

WAIT_TIME "W'd So Far (secs)",

SECONDS_IN_WAIT "Time W'd (secs)"

FROM v$session_wait

WHERE EVENT LIKE '&a&'

ORDER BY 5;

现在需要找到的是引起大量log file parallel write 等待事件的那些SQL 语句,那么怎么得到我们所关心的这些语句呢?在前面已经得到了那些产生等待事件的会话信息,那么通过这些会话信息与v$sqltext 视图进行关联查询,就可以得到相关的SQL 语句了。从上面的会话中随便找出一个,看看这个会话执行的哪条语句带来了大量logfile parallel write 等待。然后通过这个语句地址可以在v$sqltext中进行查询,这样就找到了这条SQL 语句。

select cpu.sid "SID",

cpu.username "User Name",

cpu.value "CPU(sec)",

reads.value "IO Read(k)",

writes.value "IO Write(k)"

from (select a.sid sid,

a.username username,

b.name,

c.value value,

a.serial# serial#

from v$session a, v$statname b, v$sesstat c

where a.sid = c.sid

and b.statistic# = c.statistic#

and b.name = 'CPU used by this session' ) cpu, (select a.sid,

a.username, b.name, c.value value from v$session a, v$statname b,

v$sesstat c

where a.sid = c.sid

and b.statistic# = c.statistic#

and b.name = 'physical reads' ) reads, (select a.sid, a.username,

b.name, c.value value from v$session a, v$statname b, v$sesstat c

where a.sid = c.sid

and b.statistic# = c.statistic#

and b.name = 'physical writes' ) writes

where cpu.sid = reads.sid

and reads.sid = writes.sid

and cpu.username is not null;

DBA 所需要关心的性能信息主要包括了CPU、I/O、内存、SWAP 交换这些,在UNIX 系统上,常用的收集这些信息的工具有Top、Sar、iostat、vmstat 等在OS级别看看系统资源使用情况,以辅助上面的分析结果。

Oracle等待事件之log file parallel write的更多相关文章

  1. Oracle等待事件之db file sequential read/ db file parallel read

    1.产生原因 db file sequential read这个是非常常见的I/O 相关的等待事件.表示发生了与索引扫描相关的等待.意味着I/O 出现了问题,通常表示I/O竞争或者I/O 需求太多. ...

  2. Oracle等待事件之db file scattered read

    1.产生原因 该等待事件通常发生在数据库多块读时,表示发生了与全表扫描和快速索引扫描相关的等待.通常意味着全表扫描过多,或者I/O 能力不足,或者I/O 竞争. 2.确定产生问题对象方法 a)查找全表 ...

  3. Oracle等待事件db file parallel read

    SQL> select event#,name,parameter1,parameter2,parameter3 from v$event_name where name = 'db file ...

  4. ORACLE等待事件: log file parallel write

    log file parallel write概念介绍 log file parallel write 事件是LGWR进程专属的等待事件,发生在LGWR将日志缓冲区(log_buffer)中的重做日志 ...

  5. Oracle之 等待事件log file sync + log file parallel write (awr优化)

    这是3月份某客户的情况,原因是server硬件故障后进行更换之后,业务翻译偶尔出现提交缓慢的情况.我们先来看下awr的情况. 我们能够看到,该系统的load profile信息事实上并不高,每秒才21 ...

  6. Oracle db file parallel write 和 log file parallel write 等待事件

    一. db file parallel write等待事件 引自如下blog: http://oradbpedia.com/wiki/Wait_Events_-_db_file_parallel_wr ...

  7. oracle等待事件以及解决方案

    我们可以通过视图v$session_wait来查看系统当前的等待事件,以及与等待事件相对应的资源的相关信息,从而可确定出产生瓶颈的类型及其对象. v$session_wait的p1.p2.p3告诉我们 ...

  8. Oracle等待事件之等待事件详解

    一. 等待事件的相关知识:1.1 等待事件主要可以分为两类:即空闲(IDLE)等待事件和非空闲(NON-IDLE)等待事件.1). 空闲等待事件指ORACLE正等待某种工作,在诊断和优化数据库的时候, ...

  9. Oracle 等待事件 db file sequential read

    db file sequential read-数据文件顺序读取 等待事件: "db file sequential read" Reference Note (文档 ID 345 ...

随机推荐

  1. Android学习笔记——Menu(二)

    知识点: 这次将继续上一篇文章没有讲完的Menu的学习,上下文菜单(Context menu)和弹出菜单(Popup menu). 上下文菜单 上下文菜单提供对UI界面上的特定项或上下文框架的操作,就 ...

  2. java程序后台报错java.net.SocketException: Too many open files

    问题描述: 今天一个同事反映程序有问题,让帮忙查看后台日志,发现后台日志报错的信息如下: java.net.SocketException: Too many open files at java.n ...

  3. 前端架构一之XAMPP

    摘要: 随着用户体验的重要性和项目的富客户端化,越来越多的公司将前端与后端分离开来,这时候前端就需要有自己的服务环境.本文将介绍我在开发中所用到的前端服务环境的搭建. 环境: OS: win7 64b ...

  4. mongodb 安装(windows mongodb 安装)

    MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的.他支持的数据结构非常松散,是类似json的bjson格式,因此可以存储比较复杂的数据类型.M ...

  5. 记XX2013届优秀毕业生评选(请重视在公司展现自己,重视业绩參评过程,非技术贴)

    本文不是什么技术贴.仅仅是作为一名码农,在公司发展中遇到"參评"中的一个分享,希望对大家有帮助.毕竟,升职加薪这样的事情,你须要自己去争取,须要获得领导和同事的认可.. . .考虑 ...

  6. 南京IT企业环境之最深心得体会

    我是南京做嵌入式的. 之前搞过一年的PC平台Linux内核开发,Linux内核态的仅仅要不是非常复杂的BUG还是能修复的.一年的Linux用户态软件开发. 然后近期搞了两年ARM嵌入式开发. 做的CM ...

  7. day06<面向对象>

    面向对象(面向对象思想概述) 面向对象(类与对象概述) 面向对象(学生类的定义) 面向对象(手机类的定义) 面向对象(学生类的使用) 面向对象(手机类的使用) 面向对象(一个对象的内存图) 面向对象( ...

  8. 高级类特性----final关键字

    final 关键字 在Java中声明类.属性和方法时,可使用关键字final来修饰. final标记的变量(成员变量或局部变量)即成为常量,只能赋值一次. final标记的类不能被继承.提高安全性,提 ...

  9. scala的基础部分

    最近接触到spark,spark又是scala编写的,所以需要学习一下scala. scala是面向对象的,一切皆为对象, 数值,函数都是对象. println("Welcome to th ...

  10. 在linux本地下载ftp中的文件

    使用wget命令 -r :会在当前目录下生成192.168.30.14文件名 下面的命令就是下载这个ftp目录"/home/ftp/*"下面的所有文件 wget -r ftp:// ...