linux的oracle的cpu過高分析

根據linux的oracle進程號查詢正在執行的sql

SELECT
 sql_text
 FROM v$sqltext a
 WHERE (a.hash_value, a.address) IN
 (SELECT DECODE(sql_hash_value, 0, prev_hash_value, sql_hash_value),
 DECODE(sql_hash_value, 0, prev_sql_addr, sql_address)
 FROM v$session b
 WHERE b.paddr =
 (SELECT addr FROM v$process c WHERE c.spid = '&pid'))
 ORDER BY piece ASC 

 

獲取耗時的前10條sql

select *
from (select v.sql_id,
v.child_number,
v.sql_fulltext,
v.elapsed_time,
v.cpu_time,
v.disk_reads,
rank() over(order by v.elapsed_time desc) elapsed_rank
from v$sql v) a
where elapsed_rank <= 10
ORDER BY cpu_time desc;

 

sql執行計劃

EXPLAIN PLAN FOR select questionid,mark from zeanswerdetail where username=:1  and paperid =:2  and questionid=:3  and answerid=:4  ;
 select * from table(DBMS_XPLAN.DISPLAY);

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章