2

我试图分析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...
4

3 回答 3

1

SQL Ordered by Elapsed Time, 包括在处理过程中花费大量执行时间的 SQL 语句。我们必须查看Executions等来分析。Elapsed 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

于 2014-06-11T10:38:02.050 回答
0

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

您应该使用其他工具,例如 sql_trace(使用 tkprof)或 dbms_profiler。它将专注于您自己的过程。如果您使用 sql_trace,则需要连接到服务器(或询问 dba tem)来分析跟踪。

于 2014-06-11T15:08:56.150 回答
0

在 SQL Ordered by Elapsed time 中,您始终需要检查具有低 Execution 数和较高 Elapsed time 的查询。这总是有问题的 Query 。由于在这种情况下,经过时间是各个查询的定义任务,如果执行次数较少,则它更高,这意味着由于某种原因查询的执行不符合预期。

于 2019-01-28T06:10:06.010 回答