1. 先通过top命令查看产用资源较多的spid号
2.查询当前耗时的会话ID,用户名,sqlID等:
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','256523'));
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=''
---优快云 网友提供的----
SELECTsql_text
FROMv$sqltext
a
WHERE(a.hash_value,
a.address)IN
(SELECTDECODE(sql_hash_value,0,
prev_hash_value, sql_hash_value),
DECODE(sql_hash_value,0,
prev_sql_addr, sql_address)
FROMv$session
b
WHEREb.paddr=(SELECTaddrFROMv$process
cWHEREc.spid='&pid'))
ORDERBYpieceASC
------------------------------------------------------------------------------
SQL性能诊断
本文提供了一套实用的方法来诊断和定位SQL性能问题。首先利用top命令找出占用资源较多的SPID,然后通过查询v$session视图获取具体会话信息,包括会话ID、用户名、SQL ID等。最后通过v$sqlarea视图找到正在执行的具体SQL语句。
1085

被折叠的 条评论
为什么被折叠?



