在AWR报告中按Elapsed Time排序的SQL

时间:2014-06-10 09:03:33

标签: oracle awr

我试图分析为特定进程生成的AWR报告,持续时间为一小时。我试图找出哪个查询需要花费很多时间 在运行过程中。

当我完成报告后,我可以看到SQL ordered by GetsSQL ordered by CPU TimeSQL ordered by ExecutionsSQL ordered by Parse CallsSQL ordered by Sharable MemorySQL ordered by Elapsed Time等。

我可以在表SQL Text中看到SQL ordered by Elapsed Time

我的问题:这是识别昂贵查询的正确方法吗?请就此提出建议。

Elapsed Time (s)    SQL Text
19,477.05            select abc.....
7,644.04             select def...

3 个答案:

答案 0 :(得分:1)

SQL Ordered by Elapsed Time包括在处理过程中占用大量执行时间的SQL语句。我们必须查看ExecutionsElapsed time per Exec (s)等以及Elapsed time进行分析。

例如,查询具有较低的Executions和较高的Elapsed time per Exec (s),此查询可能是进行故障排除或优化的候选对象。

到目前为止我找到的最佳参考资料:http://www.dbas-oracle.com/2013/05/10-steps-to-analyze-awr-report-in-oracle.html

答案 1 :(得分:0)

AWR用于查看数据库运行状况。所以,我认为这不是追踪流程的好工具。

您应该使用其他工具,例如sql_trace(使用tkprof)或dbms_profiler。它会集中在你自己的过程中。 如果您使用的是sql_trace,则需要连接到服务器(或询问dba tem)以分析跟踪。

答案 2 :(得分:0)

在按经过时间排序的SQL中,您始终需要检查执行次数较低和经过时间较高的查询。这将始终是有问题的Query。由于“经过时间”是相应查询的已定义任务,在这种情况下,如果“执行时间”较长而执行次数较少,则意味着该查询由于某种原因而无法达到预期的效果。