oracle 實時查詢消耗資源SQL


1. 先通過top命令查看產用資源較多的pid號, 注意:top命令的user的oacle的,關注pid 

2.查詢當前耗時的會話ID,用戶名,sqlID等:其中top中的pid就是v$process的spid字段值。不是v$process視圖中的pid值
select sid,serial#,machine,username,program,sql_hash_value,sql_id,
       to_char(logon_time,'yyyy/mm/dd hh24:mi:ss') as login_time from v$session
where paddr in (select addr from v$process where spid in ('5648612','256500'));  其中 5648612','256500' 就是查詢出的進程對應的PID值


3. 如果上一步sql_id或者 hash_value不為空,則可用v$sqlarea查出當前正在使用的sql
select sql_text
  from v$sqltext_with_newlines
  where hash_value = &hash_value
order by piece;

select * from v$sql where sql_id=''

 

--網友提供的----

 

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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM