最近处理了一个问题,是数据库连接进程占用CPU性能很高问题
1、这里我先用 v$sesstat,v$statname,v$session 和 v$process 二个数据字典,进行关联查询,查出这些进程的连接信息
select p.spid as os_pro_id,
ss.sid as ora_pro_id,
se.serial#,
se.osuser,
se.machine,
se.command,
ss.value CPU,
se.username,
se.program
from v$sesstat ss, v$session se, v$process p
where p.addr = se.paddr and se.sid = ss.sid
AND ss.statistic# in
(select statistic#
from v$statname
where name = 'CPU used by this session')
and p.spid in ('系统PID');
2、通过查询出来的SID,再用v$sqlarea 和 v$session 关联查询出单个SID所执行的任务
SELECT a.address, a.sql_text
FROM V$SQLAREA a, V$SESSION b
WHERE a.ADDRESS = b.SQL_ADDRESS
and b.sid = 'SID'
3、根据上面查询出来的结果基本上可以判断是哪台机子通过什么方式连接数据库执行的什么任务。
1、这里我先用 v$sesstat,v$statname,v$session 和 v$process 二个数据字典,进行关联查询,查出这些进程的连接信息
select p.spid as os_pro_id,
ss.sid as ora_pro_id,
se.serial#,
se.osuser,
se.machine,
se.command,
ss.value CPU,
se.username,
se.program
from v$sesstat ss, v$session se, v$process p
where p.addr = se.paddr and se.sid = ss.sid
AND ss.statistic# in
(select statistic#
from v$statname
where name = 'CPU used by this session')
and p.spid in ('系统PID');
2、通过查询出来的SID,再用v$sqlarea 和 v$session 关联查询出单个SID所执行的任务
SELECT a.address, a.sql_text
FROM V$SQLAREA a, V$SESSION b
WHERE a.ADDRESS = b.SQL_ADDRESS
and b.sid = 'SID'
3、根据上面查询出来的结果基本上可以判断是哪台机子通过什么方式连接数据库执行的什么任务。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/18762014/viewspace-1720478/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/18762014/viewspace-1720478/