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个参数,分别代表文件号、起始数据块号、数据块的数量:
sys@CCDB> 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

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

  1. db file sequential read等待事件的一点研究

    db file sequential read等待事件有3个参数:file#,first block#,和block数量. 这个等待事件有3个参数P1,P2,P3, 其中P1代表Oracle要读取的文 ...

  2. oracle之 db file sequential read等待事件优化思想

    为什么db file sequential read事件在full table scan操作中显现,为什么在多块读中为什么会有单块读存在 ? extent的大小 :当扩展区中的最后一组块仅是1个块,o ...

  3. 何时会发生db file sequential read等待事件?

    很多网友对系统内频繁发生的db file sequential read等待事件存有疑问,那么到底在那些场景中会触发该单块读等待事件呢? 在我之前写的一篇博文<SQL调优:Clustering ...

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

    db file sequential read db file sequential read等待事件有3个参数:file#,first block#,和block数量.在10g中,这等待事件受到用户 ...

  5. [20180316]理解db file parallel read等待事件.txt

    [20180316]理解db file parallel read等待事件.txt --//一直对db file parallel read等待事件不理解,因为在实际系统中很少遇到这样的等待事件. S ...

  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. db file scattered read

    SQL> set linesize 200 SQL> col name format a30 SQL> select SESSION_ID,NAME,P1,P2,P3,WAIT_TI ...

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

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

  9. control file sequential read 等待事件

    可能的原因 control file sequential read Reading from the control file. This happens in many cases. For ex ...

随机推荐

  1. Gitlab安装和使用相关信息

    Gitlab是利用 Ruby on Rails 一个开源的版本管理系统,实现一个自托管的Git项目仓库,可通过Web界面进行访问公开的或者私人项目.它拥有与Github类似的功能,能够浏览源代码,管理 ...

  2. recursion lead to out of memory

    There are two storage areas involved: the stack and the heap. The stack is where the current state o ...

  3. hdoj 1879 继续畅通工程

    继续畅通工程 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Sub ...

  4. CF 295A Greg and Array (两次建树,区间更新,单点查询)

    #include <iostream> #include <stdio.h> #include <string.h> #include <algorithm& ...

  5. 在UWSGI和NGINX配合的情况下,配置个别目录上传及超时

    笨办法就是多加一个LOCATION. 然后,自定义以下类似参数 client_max_body_size uwsgi_connect_timeout uwsgi_read_timeout server ...

  6. android 输入法的打开和关闭

    一.打开输入法窗口: InputMethodManager inputMethodManager = (InputMethodManager)  getSystemService(Context.IN ...

  7. *[codility]Country network

    https://codility.com/programmers/challenges/fluorum2014 http://www.51nod.com/onlineJudge/questionCod ...

  8. import java.util.Scanner;

    一.扫描控制台输入     当通过new Scanner(System.in)创建一个Scanner,控制台会一直等待输入,,,,,,,直到敲回车键结束,把所输入的内容传给Scanner,作为扫描对象 ...

  9. NSRange

    int main(int argc, const char * argv[]) {    @autoreleasepool {        // insert code here...       ...

  10. 虚函数(virtual)为啥不能是static

    静态成员函数,可以不通过对象来调用,即没有隐藏的this指针. virtual函数一定要通过对象来调用,即有隐藏的this指针. static成员没有this指针是关键!static function ...