如何在Oracle中找到占用大部分CPU时间的查询?

如何在Oracle中找到占用大部分CPU时间的查询?,oracle,oracle10g,Oracle,Oracle10g,我们有一个数据量巨大的应用程序,大约有100个表,其中大多数有800-1000万行,突然我们面临性能问题,发现Oracle server上的CPU使用率过高 由于对oracle server的请求来自不同的应用程序,有没有办法在oracle server中找到需要较长时间或消耗大量CPU的查询 将非常感谢您的回复或任何指示,以找出这一点。听起来您需要生成一些SQL跟踪文件,并使用tkprof分析结果 这里有一个很好的问Tom的问题,应该向您展示如何进行此操作:既然您获得了使用AWR的许可,并且您

我们有一个数据量巨大的应用程序,大约有100个表,其中大多数有800-1000万行,突然我们面临性能问题,发现Oracle server上的CPU使用率过高

由于对oracle server的请求来自不同的应用程序,有没有办法在oracle server中找到需要较长时间或消耗大量CPU的查询


将非常感谢您的回复或任何指示,以找出这一点。

听起来您需要生成一些SQL跟踪文件,并使用tkprof分析结果


这里有一个很好的问Tom的问题,应该向您展示如何进行此操作:

既然您获得了使用AWR的许可,并且您的DBA知道如何生成AWR报告,请让您的DBA在CPU使用率过高的时间段生成AWR报告。在AWR报告中,将有许多不同的部分,其中之一是按CPU使用情况排序的SQL语句。这将显示在所讨论的时间段内,哪些SQL语句使用了最多的CPU

select elapsed_time/1000000 seconds, gv$sql.*
from gv$sql
order by elapsed_time desc;

它提供的信息不如AWR等工具那么多,查询将定期老化。但是,它运行起来非常快速、简单,而且所需的权限更少。

您使用的是哪一版本的Oracle(企业版、标准版、XE版)?您有使用AWR的许可证吗?是否安装了Statspack?企业版10OK。您有使用AWR的许可证吗?是否安装了Statspack?@JustinCave-不确定Statspack,但DBA确认他们可以生成AWR.+1。当我想快速查看共享池中当前查询的cpu时间分布的偏差时,我通常查询v$sql。如果有的话,那么我们可能会遇到瓶颈。谢谢贾斯汀·凯夫!!