oracle direct path read等待事件处理案例

Posted 雅冰石

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了oracle direct path read等待事件处理案例相关的知识,希望对你有一定的参考价值。

一 问题描述

收到短信告警,提示direct path read(110)。

直接路径读取不过SGA缓存,直接从磁盘上读数据,每次查询都会产生大量的物理读,导致IO比较高,影响数据库性能。

二 排查思路

生成AWR报告及ASH报告,查看相关内容。

2.1 生成ASH报告

2.1.1 生成ASH报告

执行以下命令,生成ASH报告:

@?/rdbms/admin/ashrpt.sql

2.1.2 查看ASH报告

2.2.2.1 查看Top Events

 可以看到direct path read占比63%。

2.2.2.2 查看该等待时间对应的sql

 2.2 生成AWR报告

2.2.1 生成AWR报告

@?/rdbms/admin/awrddrpt.sql

2.2.2 查看AWR报告

2.2.2.1 查看top sql

 

 可以看到AWR报告捕获到的sql和ASH报告捕获到的是同一个sql。

2.2.2.2 查看占用物理读比较多的对象

 

 可以看到上面那个慢sql所查询的表SC_TIMING占用了大量物理读。

2.3 优化捕获到的慢sql

2.3.1 查看执行计划

SELECT WORK_ORDER_NO FROM sc_timing WHERE PROCESS_STATUS = '02' AND PROCESS_USER = :1

AWR报告显示平均需要7秒,我自己试了下,是2.6秒。

#查看执行计划

执行set autotrace on;

执行该sql:

 可以看到该sql走了全表扫描,没走索引,很多物理读和逻辑读。

2.3.2 优化该sql

在重复值不高的查询条件上建索引:

CREATE INDEX eom.ind_process_user ON  eom.sc_timing(process_user);

再次查询,只需要0.09秒了。

建完索引后,再次查看执行计划,看到走索引了,物理读和逻辑读大大减少:

 

以上是关于oracle direct path read等待事件处理案例的主要内容,如果未能解决你的问题,请参考以下文章

oracle direct path read等待事件处理

oracle9i statspack 报告 分析 direct path read 等待事件

oracle direct path read等待事件处理案例

oracle direct path read等待事件处理案例

oracle direct path read等待事件处理案例

生产环境 direct path read 与log file sync等待事件问题处理