• 模拟direct path read 等待事件


     引起direct path read这个等待事件 主要有两个原因,一个是磁盘排序,另外一个是并行查询。这里先做一个磁盘排序引起的

    direct path read.另外磁盘排序也会记录direct path write 等待事件。

    下面是实验步骤:

    SQL> select * from v$version;

    BANNER
    ----------------------------------------------------------------
    Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - Prod
    PL/SQL Release 10.2.0.3.0 - Production

    SQL> alter system set pga_aggregate_target=10m;

    系统已更改。
    session 1:
    select a.table_name,a.comments from dict a,dict b order by a.table_name;

    session 2中:
    select a.table_name,a.comments from dict a,dict b order by a.table_name;

    session 3中:
    select a.table_name,a.comments from dict a,dict b order by a.table_name;

    SQL> select sid,username, event,p1,p2,p3 from v$session where username is not null;

           SID USERNAME   EVENT                             P1         P2         P3
    ---------- ---------- ------------------------- ---------- ---------- ----------
           145 ROBINSON   direct path read temp            201      14266          7
           146 ROBINSON   direct path read temp            201      23497          1
           147 ROBINSON   direct path read temp            201      11082          7
           158 SYS        SQL*Net message to client 1111838976          1          0

    SQL> SELECT /*+ rule */ DISTINCT a.SID,TABLESPACE, b.sql_text
      2  FROM v$session a, v$sql b, v$sort_usage c
      3  WHERE a.sql_address = b.address AND a.saddr = c.session_addr;

           SID TABLESPACE                      SQL_TEXT
    ---------- ------------------------------- ---------------------------------------------------------------------------
           145 TEMP                            select a.table_name,a.comments from dict a,dict b order by a.table_name
           146 TEMP                            select a.table_name,a.comments from dict a,dict b order by a.table_name
           147 TEMP                            select a.table_name,a.comments from dict a,dict b order by a.table_name

    下面的脚本都可以查询到引起磁盘排序的SQL

    SELECT /*+ rule */ DISTINCT a.SID, a.process, a.serial#,
    TO_CHAR (a.logon_time, 'YYYYMMDD HH24:MI:SS') LOGON, a.osuser,TABLESPACE, b.sql_text
    FROM v$session a, v$sql b, v$sort_usage c
    WHERE a.sql_address = b.address AND a.saddr = c.session_addr;

    SELECT a.SID,TABLESPACE, b.sql_text
    FROM v$session a, v$sql b, v$sort_usage c
    WHERE a.sql_address = b.address AND a.saddr = c.session_addr;

    select a.sid,a.username,a.program,c.sql_text from v$session a,v$tempseg_usage b,v$sql c where a.saddr=b.session_addr and a.sql_address=c.address ;

    可以看到引起磁盘排序的等待事件后面有个temp(不知道9i中有没有temp这个关键字),不知道并行查询会不会,有时间做个并行查询的等待事件观察下

  • 相关阅读:
    AS3.0纯代码编写的两款loading效果
    AS3.0 Vector的运用
    java 垃圾回收总结(1)
    as3垃圾回收机制
    AS3.0 效率优化
    数组去重的方法
    javascript 的垃圾回收机制讲一下
    浅拷贝和深拷贝
    判断 js 类型的方式
    前端安全问题?
  • 原文地址:https://www.cnblogs.com/hehe520/p/6330668.html
Copyright © 2020-2023  润新知