Performance 获取Oracle会话使用的CPU%

Performance 获取Oracle会话使用的CPU%,performance,oracle,monitoring,Performance,Oracle,Monitoring,我需要获取Oracle会话消耗的CPU百分比 我尝试了下面的脚本,这将计算所有会话消耗的CPU总量,然后计算每个活动会话消耗的CPU总量。但这并不能真正告诉我一个活动会话占用了机器上多少%的CPU 举个例子,假设一个会话消耗了所有会话所消耗CPU总量的10%。但实际上,这只占服务器上可用CPU功率的2%。我需要得到2%的数字 WITH TOTAL_CPU AS ( select sum(VALUE/100) cpu_usage_seconds from v$session ss,

我需要获取Oracle会话消耗的CPU百分比

我尝试了下面的脚本,这将计算所有会话消耗的CPU总量,然后计算每个活动会话消耗的CPU总量。但这并不能真正告诉我一个活动会话占用了机器上多少%的CPU

举个例子,假设一个会话消耗了所有会话所消耗CPU总量的10%。但实际上,这只占服务器上可用CPU功率的2%。我需要得到2%的数字

WITH TOTAL_CPU AS
(
select 
   sum(VALUE/100) cpu_usage_seconds
from
   v$session ss, 
   v$sesstat se, 
   v$statname sn
where
   se.STATISTIC# = sn.STATISTIC#
and
   NAME like '%CPU used by this session%'
and
   se.SID = ss.SID
--and 
   --ss.status='ACTIVE'
and 
  ss.username is not null)
select * from 
(
  select 
     ss.username || '-' || se.SID "Session",
     --VALUE/100 cpu_usage_seconds,
     sum(round(VALUE/(select * from TOTAL_CPU),2)) as CPU,
     (select * from TOTAL_CPU) as Total
  from
     v$session ss, 
     v$sesstat se, 
     v$statname sn
  where
     se.STATISTIC# = sn.STATISTIC#
  and
     NAME like '%CPU used by this session%'
  and
     se.SID = ss.SID
  and 
     ss.status='ACTIVE'
  and 
     ss.username is not null
  and value > 0
  group by ss.username, se.SID  
  order by CPU desc
)
where rownum < 11
order by CPU desc

如果这是在Windows上运行的,您可以通过Sysinternals使用Process Explorer。只需转到会话所在的Oracle进程&您应该能够按线程查看CPU%。我不是Oracle DBA,但我假设每个会话都是Windows上的一个线程


如果这是Unix/Linux,会话是否也运行新线程?是一个关于如何在Unix/Linux上获取这些信息的链接。

这是Windows还是Unix/Linux?这是Unix。恐怕Windows线程和Oracle会话是完全不同的。会话更像是与正在执行某些操作的Oracle的连接。请参阅以下链接:。它建议在Windows上,会话位于单独的线程上,这篇文章还提到在unix上需要PID,因此在unix上,会话必须位于唯一的进程中