db file scattered read 等待事件

db file scattered read 等待事件:

我们经常会见到db file scattered read  等待事件,在生产环境中,这个等待事件可能更为常见。这个事件表明用户进程正在读数据到Buffer Cache中,等待直到I/O调用返回。db file scattered read发出离散读,将存储上连续的数据块离散的读入到多个不连续的内存位置。Scattered Read通常是多块读,在Full Table Scan或Fast Full Scan等访问方式下使用。Scattered Read代表Full Scan,当执行Full Scan读取数据到Buffer Cache时,通常连续的数据在内存中的存储位置并不连续,所以这个等待被命名为Scattered Read(离散读)。每次多块读读取的数据块数量受初始化参数DB_FILE_MULTIBLOCK_READ_COUNT限制。下图简要说明了Scattered Read的数据读取方式。

从v$event_name视图可以看到,该等待有3个参数,分别代表文件号、起始数据块号、数据块的数量:

[email protected]> select event#,name,parameter1,parameter2,parameter3

2  from v$event_name

3  where name = ‘db file scattered read‘;

EVENT# NAME                           PARAMETER1   PARAMETER2   PARAMETER3

---------- ------------------------------ ------------ ------------ ------------

132 db file scattered read         file#        block#       blocks

数据文件号、起始数据号加上数据块的数量,通过这些信息可以知道Oracle Session正在等待的对象文件等信息。该等待可能和全表扫描(Full Table Scan)或者快速全索引扫描(Index Fast Full Scan)的连续读取相关,根据经验,通常大量的db file scattered read等待可能意味着应用问题或者索引缺失。

在实际环境的诊断过程中,可以通过v$session_wait视图发现session的等待,再结合其他视图找到存在问题的SQL等根本原因,从而从根本上解决问题。

当这个等待事件比较显著时,用户也可以结合v$session_longops动态性能视图来进行诊断,该视图中记录了长时间(运行时间超过6秒的)运行的事务,可能很多是全表扫描操作(不管怎样,这部分信息都是值得我们注意的)。

从Oracle 9i开始,Oracle新增加了一个视图v$sql_plan用于记录当前系统Library Cache中SQL语句的执行计划,可以通过这个视图找到存在问题的SQL语句。

可以过程v$sql_plan和v$sqltext联合,获得这些查询的SQL语句,查找全表扫描的SQL语句可以参考如下语句:

select sql_text from v$sqltext t,v$sql_plan p where t.hash_value = p.hash_value  and p.operation = ‘TABLE ACCESS‘   and p.options = ‘FULL‘ order by p.hash_value,t.piece;

查找Fast Full Index扫描的SQL语句可以参考如下语句:

select sql_text from v$sqltext t, v$sql_plan p where t.hash_value = p.hash_value and p.operation = ‘INDEX‘  and p.options = ‘FULL SCAN‘ order by p.hash_value, t.piece;

这些信息对于发现数据库问题,优化数据库性能具有极强的指导意义。

在Oracle 10g中,Oracle对等待事件进行了分类,db file scattered read事件被归入User I/O一类:

select name,parameter1 p1,parameter2 p2,parameter3 p3,wait_class_id,wait_class#,wait_class from v$event_name         where name = ‘db file scattered read‘;

NAME                      P1         P2         P3         WAIT_CLASS_ID WAIT_CLASS# WAIT_CLASS

------------------------- ---------- ---------- ---------- ------------- ----------- ------------

db file scattered read    file#      block#     blocks        1740759767           8 User I/O

完成对等待事件的分类之后,Oracle 10g的ADDM可以很容易地通过故障分析定位到问题所在,帮助用户快速发现数据库的瓶颈及瓶颈的根源,这就是Oracle的ADDM专家系统的设计思想。

通过下图可以直观清晰地看到这个等待模型和ADDM结合实现的Oracle专家诊断系统。

转:http://www.360doc.com/content/16/0906/20/36335693_588898007.shtml

时间: 2024-11-05 01:33:42

db file scattered read 等待事件的相关文章

db file sequential read等待事件 --转载

db file sequential read db file sequential read等待事件有3个参数:file#,first block#,和block数量.在10g中,这等待事件受到用户I/O等待级别的影响.当处理db file sequential read等待事件的时候,牢记以下关键想法. l         Oracle进程需要一个当前不在SGA中的块,等待数据库块从磁盘读入到SGA中 l         要看的两个重要的数字是单独会话的TIME_WAITED和AVERAGE

详解 db file sequential read 等待事件

db file sequential read (本文由thomaswoo_dba翻译,转载请注明出处) db file sequential read 事件有三个参数:file#,first block#, block count, 在oracle 10g里,此等待事件在归于 User I/O wait class 下面的. 处理db file sequential read 事件要牢牢把握下面三个主要思想: 1)oracle 进程需要访问的block不能从SGA 中获取,因此oracle 进

db file sequential read等待事件

db file sequential read:直接路径读: 官方说明如下: This event signifies that the user process is reading a buffer into the SGA buffer cache and is waiting for a physical I/O call to return. A sequential read is a single-block read. Single block I/Os are usually

Oracle 等待事件之 db file scattered read

db file scattered read 官网解释: This event signifies that the user process is reading buffers into the SGA buffer cache and is waiting for a physical I/O call to return. A db file scattered read issues a scattered read to read the data into multiple dis

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

一. db file parallel write等待事件 引自如下blog: http://oradbpedia.com/wiki/Wait_Events_-_db_file_parallel_write db文件并行写 db文件并行写等待事件属于Oracle数据库写入程序(DBWR)进程,因为它是将块从SGA写入数据文件的唯一进程.当是写入时,DBWR进程编译一组脏块,将批处理交给操作系统,并等待db文件并行写事件以完成I / O.虽然用户会话从来没有遇到db文件并行写等待事件,但这并不意味

一.1.1 db file scattered read(数据文件离散读)

在V$SESSION_WAIT这个视图里面,这个等待事件有三个参数P1.P2.P3,其中P1代表Oracle要读取的文件的绝对文件号,P2代表Oracle从这个文件中开始读取的BLOCK号,P3代表Oracle从这个文件开始读取的BLOCK号后读取的BLOCK数量. SELECT * FROM   v$event_name WHERE  NAME IN ('db file sequential read', 'db file scattered read');   从V$EVENT_NAME视图

Oracle等待事件之db file scattered read

1.产生原因 该等待事件通常发生在数据库多块读时,表示发生了与全表扫描和快速索引扫描相关的等待.通常意味着全表扫描过多,或者I/O 能力不足,或者I/O 竞争. 2.确定产生问题对象方法 a)查找全表扫描的SQL 语句可以使用以下语句: select sql_text from v$sqltext t, v$sql_plan p where t.hash_value = p.hash_value and p.operation = 'TABLE ACCESS' and p.options = '

control file sequential read 等待事件

可能的原因 control file sequential read Reading from the control file. This happens in many cases. For example, while: 1.Making a backup of the control files 2.Sharing information (between instances) from the control file 3.Reading other blocks from the c

Oracle常见的几种等待事件

1. CPU time 正常情况,在等待事件中排首位 NUM_CPU_SOCKETS    物理CPU的数目 NUM_CPU_CORES       CPU的核数 NUM_CPUS                  逻辑CPU的数目 2. Buffer busy waits (Buffer busy wait / read by other session) 一般这2个等待事件可以归为一起处理,建议进行监控 . 可能是如下操作引起 select/select --- read by other