oracle中按CPU资源消耗排序SQL

  
  set lines 180
set pagesize 500
col INSTANCE_NUMBER for 99
col module format a10
col execs for 999,999,999
col etime for 999,999,999.9
col avg_etime for 999,999.999
col avg_cpu_time for 999,999.999
col avg_lio for 999,999,999.9
col avg_pio for 9,999,999.9
col begin_interval_time for a30
col node for 99999
break on plan_hash_value on startup_time skip 1
select * from (
select INSTANCE_NUMBER,sql_id, plan_hash_value, 
sum(execs) execs, 
sum(etime) etime, 
sum(etime)/sum(execs) avg_etime, 
sum(cpu_time)/sum(execs) avg_cpu_time,
sum(lio)/sum(execs) avg_lio, 
sum(pio)/sum(execs) avg_pio,
module
from (
select ss.snap_id, ss.instance_number node, begin_interval_time, s.INSTANCE_NUMBER,s.module ,sql_id, plan_hash_value,
nvl(executions_delta,0) execs,
elapsed_time_delta/1000000 etime,
(elapsed_time_delta/decode(nvl(executions_delta,0),0,1,executions_delta))/1000000 avg_etime,
buffer_gets_delta lio,
disk_reads_delta pio,
cpu_time_delta/1000000 cpu_time,
(buffer_gets_delta/decode(nvl(buffer_gets_delta,0),0,1,executions_delta)) avg_lio,
(cpu_time_delta/decode(nvl(executions_delta,0),0,1,executions_delta)) avg_cpu_time
from DBA_HIST_SQLSTAT S, DBA_HIST_SNAPSHOT SS
where ss.snap_id = S.snap_id
and ss.instance_number = S.instance_number 
and executions_delta > 0
and ss.begin_interval_time >= sysdate -3  
and s.PLAN_HASH_VALUE>0
)
group by INSTANCE_NUMBER,sql_id, plan_hash_value,module
order by 8 desc
)  where rownum <= 100;
/
时间: 2024-10-12 18:27:09

oracle中按CPU资源消耗排序SQL的相关文章

SqlServer中检查CPU资源运行状态

SQL Server中查询CPU占用高的SQL语句 SQL Server中查询CPU占用高的情况,会用到sys.sysprocesses ,dm_exec_sessions ,dm_exec_requests 1.查看当前的数据库用户连接有多少 USE master GO SELECT * FROM sys.[sysprocesses] WHERE [spid]>50 AND DB_NAME([dbid])='要查询的数据库名称' SELECT COUNT(*) FROM [sys].[dm_e

oracle 数据库服务器CPU资源占用超高(75%)

环境: Oracle Database 11g Enterprise Edition Release 11.2.0.2.0 - 64bit Production CentOS release 6.5 X64 现象:系统CPU使用率达到75%,查看系统进程资源状态. 数据库中查看 select t.sql_text,s.sid, s.serial#,s.program,s.process,s.USERNAME,p.spid from  v$sqlarea t ,v$session s ,v$pro

在LIUNX服务器上找出web项目中占用cpu资源最多的线程的排查方法

在这里对linux下.sun(oracle) JDK的线程资源占用问题的查找步骤做一个小结:linux环境下,当发现java进程占用CPU资源很高,且又要想更进一步查出哪一个java线程占用了CPU资源时,按照以下步骤进行查找: 第一步:登陆到web服务所在的liunx服务器,利用top命令获取java的cpu使用率 第二步: 如上图所示,java的进程id为'3260',接下来用top命令单独对这个进程中的所有线程作监视:top -p 3260 -H 第三步: 如上图所示,linux下,所有的

【转载】SQL Server中查询CPU占用高的SQL语句

本文导读:触发器造成死锁.作业多且频繁.中间表的大量使用.游标的大量使用.索引的设计不合理.事务操作频繁.SQL语句设计不合理,都会造成查询效率低下.影响服务器性能的发挥.我们可以使用sql server自带的性能分析追踪工具sql profiler分析数据库设计所产生问题的来源,进行有针对性的处理:下面介绍SQL Server中如何查询CPU占用高的SQL语句 SQL Server中查询CPU占用高的情况,会用到sys.sysprocesses ,dm_exec_sessions ,dm_ex

oracle 中如何定位重要(消耗资源多)的SQL【转】

1.查看值得怀疑的SQL select substr(to_char(s.pct,'99.00'),2)||'%'load, s.executions executes, p.sql_text from(select address, disk_reads, executions, pct, rank()over(order by disk_reads desc) ranking from(select address, disk_reads, executions, 100*ratio_to_

oracle中查找执行效率低下的SQL

v$sqltext:存储的是完整的SQL,SQL被分割 v$sqlarea:存储的SQL 和一些相关的信息,比如累计的执行次数,逻辑读,物理读等统计信息(统计) v$sql:内存共享SQL区域中已经解析的SQL语句.(即时) 根据sid查找完整sql语句: select sql_text from v$sqltext a where a.hash_value = (select sql_hash_value from v$session b where b.sid = '&sid'    )or

Oracle中rownum在结果集中排序的使用

对于 Oracle 的 rownum 问题,很多资料都说不支持>,>=,=,between...and,只能用以上符号(<.<=.!=),并非说用>,>=,=,between..and 时会提示SQL语法错误,而是经常是查不出一条记录来,还会出现似乎是莫名其妙的结果来,其实您只要理解好了这个 rownum 伪列的意义就不应该感到惊奇,同样是伪列,rownum 与 rowid 可有些不一样,下面以例子说明 有一张表:tbrole 若是执行语句select r.*,rown

ORACLE中能否找到未提交事务的SQL语句

  在Oracle数据库中,我们能否找到未提交事务(uncommit transactin)的SQL语句或其他相关信息呢?  关于这个问题,我们先来看看实验测试吧.实践出真知. 首先,我们在会话1(SID=63)中构造一个未提交的事务,如下所: SQL> create table test   2  as   3  select * from dba_objects;   Table created. SQL> select userenv('sid') from dual;   USEREN

向Oracle中传入数组,批量执行SQL语句

1.首先用PL/SQL创建package 1 create or replace package excuteBatchOperate 2 as 3 type sqlStr_Array is table of varchar2(1000) index by binary_integer; 4 procedure excuteBulkData(sqlStr in sqlStr_Array); 5 end excuteBatchOperate; 2.在packagebody内创建存储过程 1 cre