1. 今天我要做一个SQL调优,监控该SQL 利用ASH 监控 SQL是在sid=4848 上面跑的
  2. db file sequential read等待事件有3个参数:file#,first block#,和block数量。
  3. 这个等待事件有3个参数P1P2P3,其中P1代表Oracle要读取的文件的绝对文件号,P2代表Oracle从这个文件中开始读取的起始数据块号,P3代表读取的BLOCK数量,通常这个值为1,表明是道单个BLOCK被读取。
  4. SQL>  select SESSION_ID,NAME,P1,P2,P3,WAIT_TIME,CURRENT_OBJ#,CURRENT_FILE#,CURRENT_BLOCK#
  5.   2         from v$active_session_history ash, v$event_name enm
  6.   3         where ash.event#=enm.event#
  7.   4         and SESSION_ID=4848;
  8. SESSION_ID NAME                                   P1         P2         P3  WAIT_TIME CURRENT_OBJ# CURRENT_FILE# CURRENT_BLOCK#
  9. ---------- ------------------------------ ---------- ---------- ---------- ---------- ------------ ------------- --------------
  10.       4848 db file sequential read                87     409499          1          0     58744541            87         409499
  11.       4848 db file sequential read               674     178953          1          0     58744541           674         178953
  12.       4848 db file sequential read               409     491921          1          0     58744541           409         491921
  13.       4848 db file sequential read               169     310289          1          0     58744541           169         310289
  14.       4848 db file sequential read                21     811534          1          0     58744541            21         811534
  15.       4848 db file sequential read                12     494321          1          0     58744541            12         494321
  16.       4848 db file sequential read               571     359814          1          0     58744541           571         359814
  17.       4848 db file sequential read                18     782340          1          0     58744541            18         782340
  18.       4848 db file sequential read                87     409073          1          0     58744541            87         409073
  19.       4848 db file sequential read               107     362350          1          0     58744545           107         362350
  20.       4848 db file sequential read               674     179953          1          0     58744545           674         179953
  21.       4848 db file sequential read                14     562832          1          0     58744545            14         562832
  22.       4848 db file sequential read               674     170372          1          0     58744545           674         170372
  23.       4848 db file sequential read                15     434867          1          0     58744545            15         434867
  24.       4848 db file sequential read               674     180111          1          0     58744545           674         180111
  25.       4848 db file sequential read               258     336128          1          0     58744545           258         336128
  26.       4848 gc cr grant 2-way                     206    1696993          1          0     58744545           206        1696993
  27.       4848 gc cr grant 2-way                      87     412582          1          0     58744545            87         412582
  28.       4848 db file sequential read                15     434831          1          0     58744545            15         434831
  29.       4848 db file sequential read               677     175793          1          0     58744545           677         175793
  30.       4848 db file sequential read               571     360776          1          0     58744545           571         360776
  31.       4848 db file sequential read               250     115741          1          0     58988767           250         115741
  32.       4848 db file sequential read               247     337993          1          0     58744545           247         337993
  33.       4848 db file sequential read               169     315606          1          0     58744549           169         315606
  34.       4848 db file sequential read               246     411238          1          0     58744549           246         411238
  35.       4848 db file sequential read               258     341515          1          0     58744549           258         341515
  36.       4848 db file sequential read               258     341748          1          0     58744549           258         341748
  37.       4848 db file sequential read                17     409377          1          0     58744549            17         409377
  38.       4848 db file sequential read               674     171523          1          0     58744549           674         171523
  39.       4848 db file sequential read               409     788005          1          0     58744549           409         788005
  40. 发现很多都是 db file sequential read等待事件
  41. SQL> select owner,object_name,object_type from dba_objects where object_id=58744549;
  42. OWNER                OBJECT_NAME                              OBJECT_TYPE
  43. -------------------- ---------------------------------------- ------------------------------
  44. ADWU                 SHPMT_GDF_HIST_FCT_NEW                   TABLE SUBPARTITION
  45. SQL> select owner,object_name,object_type from dba_objects where object_id=58744541;
  46. OWNER                OBJECT_NAME                              OBJECT_TYPE
  47. -------------------- ---------------------------------------- ------------------------------
  48. ADWU                 SHPMT_GDF_HIST_FCT_NEW                   TABLE SUBPARTITION
  49. 但是这个等待事件不是 发生在index 上面,而是 发生在 table上!!!
  50. 也许你觉得 object_id定位不准确,那么我用 file#,block#定位,同样发生在 table上
  51. SQL> set lines 200
  52. SQL> set pages 100
  53. SQL> set timi on
  54. SQL> col owner format a30
  55. SQL> col segment_name format a40
  56. SQL> col segment_type format a30
  57. SQL> select owner,segment_name,segment_type from dba_extents
  58.   2  where file_id=87 and 425778 between block_id and block_id+blocks-1;
  59. OWNER                          SEGMENT_NAME                             SEGMENT_TYPE
  60. ------------------------------ ---------------------------------------- ------------------------------
  61. ADWU                           SHPMT_GDF_HIST_FCT_NEW                   TABLE SUBPARTITION
  62. 为什么db file sequential read 发生在 table上呢?怀疑是行迁移/行连接(具体请看Metalink)
  63. Full Table Scans On A Table Is Reading 1 Block At A Time. (Due To Chained / Migrated Rows) [ID 554366.1]
  64. SQL> select c.sid,c.username,b.name,a.value,trunc(a.value/(select sum(value) from v$sesstat a,v$statname b
  65.   2   where a.statistic#=b.statistic# and b.name='table fetch continued row'),4)*100 ||'%' pct_used
  66.   3  from v$sesstat a, v$statname b,v$session c where a.statistic# =b.statistic# and b.name='table fetch continued row'
  67.   4   and a.sid=c.sid and c.sid=4848;
  68.        SID USERNAME                       NAME                                VALUE PCT_USED
  69. ---------- ------------------------------ ------------------------------ ---------- -----------------------------------------
  70.       4848 BW9518                         table fetch continued row               8 .04%
  71. 更加让我怀疑是行迁移/行连接
  72. 那么现在Analyze
  73.  analyze table adwu.SHPMT_GDF_HIST_FCT_NEW compute statistics;
  74. 由于表很大(8亿多数据)。。。等Analyze完了再更新博客。。。
  75. SQL> select s.inst_id, s.sid, s.serial#,  s.event,
  76.   2         q.sql_text
  77.   3  from   gv$session s, gv$sql q, gv$session_longops l
  78.   4  where  s.inst_id = q.inst_id(+)
  79.   5  and    s.sql_id  = q.sql_id(+)
  80.   6  and    s.inst_id = l.inst_id(+)
  81.   7  and    s.sid     = l.sid(+)
  82.   8  and    s.serial# = l.serial#(+)
  83.   9  and    s.username like upper('BW9518')
  84.  10  group by s.inst_id, s.sid, s.serial#, s.username, s.logon_time, s.status, s.sql_id, s.machine, s.LAST_CALL_ET, s.event, q.sql_text, q.PLAN_HASH_VALUE
  85.  11  ;
  86.    INST_ID        SID    SERIAL# EVENT                                    SQL_TEXT
  87. ---------- ---------- ---------- ---------------------------------------- --------------------------------------------------------------------------------
  88.          1       4669         59 PX Deq: Execution Msg                    select s.inst_id, s.sid, s.serial#,  s.event,        q.sql_text from   gv$sessio
  89.          1       4791       2987 db file sequential read                  analyze table adwu.SHPMT_GDF_HIST_FCT_NEW compute statistics
  90.          1       4817       3318 SQL*Net message from client              select s.inst_id, s.sid, s.serial#,  s.event,        q.sql_text from   gv$sessio
  91.          1       4820       2427 SQL*Net message from client
  92.          1       4826       2013 SQL*Net message from client
  93.          1       4848       1325 gc cr request                            SELECT      i.initv_skid, f.prod_csu_type_code,                  i.time_perd_ski
  94.          2       4809      49553 db file sequential read                   SELECT                 i.initv_skid, f.prod_csu_type_code,                 i.ti
  95.          2       4859      10363 PX Deq: reap credit                      select s.inst_id, s.sid, s.serial#,  s.event,        q.sql_text from   gv$sessio
  96.          3       4830       1778 PX Deq: reap credit                      select s.inst_id, s.sid, s.serial#,  s.event,        q.sql_text from   gv$sessio
  97.          4       4827       4452 PX Deq: reap credit                      select s.inst_id, s.sid, s.serial#,  s.event,        q.sql_text from   gv$sessio
  98. 10 rows selected
  99. 更新---------
  100. SQL> select table_name,pct_free from ALL_TAB_PARTITIONS where table_name='SHPMT_GDF_HIST_FCT_NEW';
  101. TABLE_NAME                       PCT_FREE
  102. ------------------------------ ----------
  103. SHPMT_GDF_HIST_FCT_NEW                  0
  104. SHPMT_GDF_HIST_FCT_NEW                  0
  105. SHPMT_GDF_HIST_FCT_NEW                  0
  106. SHPMT_GDF_HIST_FCT_NEW                  0
  107. SHPMT_GDF_HIST_FCT_NEW                  0
  108. SHPMT_GDF_HIST_FCT_NEW                  0
  109. SHPMT_GDF_HIST_FCT_NEW                  0
  110. SHPMT_GDF_HIST_FCT_NEW                  0
  111. SHPMT_GDF_HIST_FCT_NEW                  0
  112. SHPMT_GDF_HIST_FCT_NEW                  0
  113. SHPMT_GDF_HIST_FCT_NEW                  0
  114. SHPMT_GDF_HIST_FCT_NEW                  0
  115. SHPMT_GDF_HIST_FCT_NEW                  0
  116. SHPMT_GDF_HIST_FCT_NEW                  0
  117. SHPMT_GDF_HIST_FCT_NEW                  0
  118. SHPMT_GDF_HIST_FCT_NEW                  0
  119. SHPMT_GDF_HIST_FCT_NEW                  0
  120. SHPMT_GDF_HIST_FCT_NEW                  0
  121. SHPMT_GDF_HIST_FCT_NEW                  0
  122. SHPMT_GDF_HIST_FCT_NEW                  0
  123. SHPMT_GDF_HIST_FCT_NEW                  0
  124. SHPMT_GDF_HIST_FCT_NEW                  0
  125. SHPMT_GDF_HIST_FCT_NEW                  0
  126. SHPMT_GDF_HIST_FCT_NEW                  0
  127. SHPMT_GDF_HIST_FCT_NEW                  0
  128. SHPMT_GDF_HIST_FCT_NEW                  0
  129. SHPMT_GDF_HIST_FCT_NEW                  0
  130. SHPMT_GDF_HIST_FCT_NEW                  0
  131. SHPMT_GDF_HIST_FCT_NEW                  0
  132. SHPMT_GDF_HIST_FCT_NEW                  0
  133. SHPMT_GDF_HIST_FCT_NEW                  0
  134. SHPMT_GDF_HIST_FCT_NEW                  0
  135. SHPMT_GDF_HIST_FCT_NEW                  0
  136. SHPMT_GDF_HIST_FCT_NEW                  0
  137. SHPMT_GDF_HIST_FCT_NEW                  0
  138. SHPMT_GDF_HIST_FCT_NEW                  0
  139. SHPMT_GDF_HIST_FCT_NEW                  0
  140. SHPMT_GDF_HIST_FCT_NEW                  0
  141. SHPMT_GDF_HIST_FCT_NEW                  0
  142. 39 rows selected
  143. 这个表PCF_FREE=0ANALYZE 已经没必要等了 
  144. 现在已经明确问题了,表上面肯定有很多行迁移/连接,analyze 都给我来db file sequential read
  145. 总结:对于 db file sequential read 表示单块读,出现该等待事件并不是 表示说 一定是读索引,也有可能是读表,如果有大量等待事件发生在表上面,那么很可能出现行迁移/连接。
  146. 单块读:要么是行迁移,要么是UNDO
  147. pct_free=0  稍微update一下就产生hang迁移
  148. 												
  149. 											

    全表扫描引发的db file sequential read的更多相关文章

      1. UNDO引发的db file sequential read
      1. SQL> select * from (select SESSION_ID, NAME, P1, P2, P3, WAIT_TIME, CURRENT_OBJ#, CURRENT_FILE#, ...

      1. 全表扫描出现db file sequential read
      1. SESSION 1执行 SQL> update test1 set id=1000; SESSION 2 : select * from test1 如果表上面有大量的行迁链接,会是单块读等待事 ...

      1. 常识之外:全表扫描为何产生大量 db file sequential read 单块读?
      1. 原创 2016-07-05 熊军 Oracle   编辑手记:在理解Oracle技术细节时,我们不仅应该读懂概念,还要能够通过测试验证细节,理解那些『功夫在诗外』的部分,例如全表扫描和单块读. 开发人 ...

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

      1. db file sequential read (数据文件顺序读取)
      1. 转载:http://www.dbtan.com/2010/04/db-file-sequential-read.html db file sequential read (数据文件顺序读取): db ...

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

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

      1. 模拟等待事件:db file sequential read
      1. 相关知识: db file sequential read  单块读 optimizer_index_cost_adj 这个初始化参数代表一个百分比,取值范围在110000之间.该参数表示索引扫描和 ...

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

    1. 	
    2. 随机推荐

        1. 狗血phonegap备忘录[3.3]
        1. phonegap平台就是个狗血的坑,最近的一个项目技术因为上面选型失败,使用了phonegap,加上客户的要求是"像微信一样",真可谓历经坎坷. 基本上评估一个项目是否应该或者可以 ...

        1. 给想上MIT的牛学生说几句
        1. [来信] 老师您好! 非常冒昧的来打搅您,仅仅是在学习上实在有些困惑才来向您求教一番. 我是计算机科学与技术的大一学生,我非常喜欢我自己的专业,可是学校里讲的东西太慢,太浅,所以我一般都是自学,我在自 ...

        1. TI C66x DSP 系统events及其应用 - 5.10(创建ISR的三种情况)
        1. ISFP是服务中断的指令包,创建ISR的三种情况: 1.一个ISFP包的8条指令就能够满足ISR watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQveWl5ZW ...

        1. (总结)Nginx配置文件nginx.conf中文详解 <转>
        1. 转自 http://www.ha97.com/5194.html #定义Nginx运行的用户和用户组user www www; #nginx进程数,建议设置为等于CPU总核心数.worker_proc ...

        1. centos 6+安装山逗斯骚尅特(本文内容来自都比更具帝)
        1. 系统支持:CentOS 6+,Debian 7+,Ubuntu 12+ 内存要求:≥128M 关于本脚本 一键安装 Shadowsocks-Python, ShadowsocksR, Shadowso ...

        1. codevs 1378 选课 (树形DP
        1. #include<iostream> #include<cstdio> #include<cstring> using namespace std; ][],f[] ...

        1. STpoj3264
        1.   /* ST表多次查询区间最小值 设 g[j][i] 表示从第 i 个数到第 i + 2 ^ j - 1 个数之间的最小值 类似DP的说 ans[i][j]=min (ans[i][mid],ans ...

        1. JS的replace()的应用
        1. 替换字符串中的空格 /\s/ig 例如: var pro="ssss  ssss  sss ddd ss" var protext = pro.replace(/\s/ig,&qu ...

        1. java中的IO二
        1. java中流分为节点流和处理流,IO一中的案例都是节点流 一.处理流的使用实例 二.装饰者模式 以上BufferReader的用法就是装饰者模式 Decorator就是动态地给对象增添行为 如果要实现 ...

        1. CocoaPods使用详细说明(转)
        1. 一.概要 iOS开发时,项目中会引用许多第三方库,CocoaPods(https://github.com/CocoaPods/CocoaPods)可以用来方便的统一管理这些第三方库. 二.安装 由于 ...

      1. 							
      2.