獲得消耗cpu較高的topsql
一、
SELECT a.snap_id,
a.dbid,
a.instance_number,
DB_TIME,
to_char(TRUNC((DB_TIME - lag(DB_TIME, 1, DB_TIME)
over(PARTITION BY stat_name,
instance_number ORDER BY snap_id)) / 1000000 / 60,
2)) DB_TIME_
FROM (SELECT a.snap_id,
a.dbid,
a.instance_number,
a.stat_name,
SUM(a.value) DB_TIME
FROM DBA_HIST_SYS_TIME_MODEL a
WHERE a.stat_name = 'DB time'
--AND a.instance_number = 2
GROUP BY a.snap_id, a.dbid, a.instance_number, a.stat_name) a;
SELECT a.snap_id,
a.dbid,
a.instance_number,
DB_TIME,
/* to_char(TRUNC((DB_TIME - lag(DB_TIME, 1, DB_TIME)
over(PARTITION BY stat_name,
instance_number ORDER BY snap_id)) / 1000000 / 60,
2)) DB_TIME_, */
b.END_INTERVAL_TIME
FROM (SELECT a.snap_id,
a.dbid,
a.instance_number,
a.stat_name,
SUM(a.value) DB_TIME
FROM DBA_HIST_SYS_TIME_MODEL a
WHERE a.stat_name = 'DB time'
GROUP BY a.snap_id, a.dbid, a.instance_number, a.stat_name) a,dba_hist_snapshot b where a.snap_id=b.snap_id;
執行上面兩個語句得到資料之後按照snap_id對應起來,可以得到snap_id、DB_TIME_、END_INTERVAL_TIME這仨個欄位,就可以確定某個時間點的db_time值與snap_id所對應的具體的時間。
然後把相應時間段的snap_id代入下面的語句即可得到top10的語句
select to_char(t.INSTANCE_NUMBER) i_n,t.sql_id,to_char(t.username) username,
to_char(t.disk_reads) d_r,to_char(t.buffer_gets_nvl) buffer_nvl,t.bget buffer_gets,t.elap_time,t.cpu_time,
t.exec,t.elap_nvl,t.sql_text
from
(select sqt.bget,
sqt.exec,
username,
INSTANCE_NUMBER,
disk_reads,
decode(sqt.exec, 0, to_number(null) , (sqt.bget / sqt.exec)) buffer_gets_nvl,
nvl((sqt.cput / 1000000), to_number(null)) cpu_time ,
nvl((sqt.elap / 1000000), to_number(null)) elap_time,
(sqt.elap / 1000000) / sqt.exec elap_nvl,
sqt.sql_id,
st.sql_text
from
(select sql_id,parsing_schema_name username,INSTANCE_NUMBER,
sum(buffer_gets_delta) bget,
sum(executions_delta) exec,
sum(cpu_time_delta) cput,
sum(elapsed_time_delta) elap,
sum(DISK_READS_DELTA) disk_reads
from dba_hist_sqlstat
where snap_id>=30281 and snap_id<=30307 ---------------把相關時間點的snap_id寫到這裡即可
group by sql_id,parsing_schema_name,INSTANCE_NUMBER) sqt,
dba_hist_sqltext st
where st.sql_id(+) = sqt.sql_id
and sqt.exec != 0
and st.sql_text not like '%DUAL%%'
order by nvl((sqt.cput / 1000000), to_number(null)) desc, sqt.sql_id ,username,INSTANCE_NUMBER,disk_reads) t
where rownum < 65
and (rownum <= 10);
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/25462274/viewspace-2106690/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- MySQL 5.7定位消耗CPU高的SQLMySql
- 透過top命令抓取cpu高消耗的sqlSQL
- 通過top命令抓取cpu高消耗的sqlSQL
- 硬解析帶來高CPU消耗的診斷
- TopSQL,計算某條sql的CPU time.SQL
- AWR報告分析之一:高 DB CPU 消耗的效能根源-eygle
- 如何捕獲問題SQL解決過度CPU消耗的問題SQL
- cpu瓶頸 top的核心sy佔用較高
- 指定快照時間內根據等待類查詢消耗較高的sqlSQL
- 如何捕獲問題SQL解決過度CPU消耗問題 (zt)SQL
- 捕獲問題SQL解決過度CPU消耗問題-- 轉載SQL
- Oracle中獲取最低效的 topSQL的語句 (引用)OracleSQL
- 實時獲得最耗CPU資源的SQL語句(zt)SQL
- Android 獲得View寬高的幾種方式AndroidView
- 記一次K8S叢集Node節點CPU消耗高故障K8S
- 檢視當前最消耗CPU/Memory的oracle程式Oracle
- 找出消耗CPU最高的程式對應的SQL語句SQL
- 有哪些比較好的渠道可以獲得比特幣的訊息?比特幣
- Rust中獲得CPU核數與列印日誌到控制檯?Rust
- sql調優學習之cpu消耗過多...SQL
- linux下檢視最消耗CPU、記憶體的程式Linux記憶體
- linux 查詢最消耗CPU和記憶體的程式Linux記憶體
- SQLServer如何查詢近3分鐘最消耗CPU的SQLSQLServer
- lr計算程式執行消耗時間的比較:
- 記一次獲得3倍效能的go程式最佳化實踐,及on-cpu/off-cpu火Go
- java語言如何獲得cpu和記憶體使用的百分比Java記憶體
- 遊戲測試 Perfdog 實戰之減少 CPU 消耗遊戲
- 【AIX 學習】記憶體和CPU消耗程式排序AI記憶體排序
- 無需高配置 怎麼獲得超流暢的VR體驗?VR
- 動態IP代理-如何讓文章獲得高閱讀量?
- Java cpu 高排查Java
- Oracle資料庫 11.2.0.4 EMON程式持續消耗CPUOracle資料庫
- 獲得類的屬性
- 如何快速定位當前資料庫消耗 CPU 最高的 sql 語句?資料庫SQL
- ORACLE CPU佔率高的程式Oracle
- Oracle高資源消耗SQL語句定位OracleSQL
- 執行sed命令卡死CPU消耗100%一例分析
- Java不同資料結構記憶體消耗比較Java資料結構記憶體