通过top获得消耗cpu高的pid。
(1)通过pid,使用操作系统工具可以找到有问题的进程。确认这是远程连接的用户进程。
$ps -ef | grep pid
(2)捕获存在问题的SQL语句:getsql.sql
select /*+ORDERD*/ 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;
(瞬时值)
通过pid和v$process。spid相关联,可以获得Process的相关消息,进而通过v$process.addr和v$session.paddr相关联,就可以获得和session相关的所有信息。再结合v$sqltext,即可获得当前session正在执行的SQL语句。通过v$process视图,就可以把操作系统和数据库关联起来。
|
|