前言:
如今各位老铁们对“oracle数据库性能分析”大致比较看重,咱们都想要知道一些“oracle数据库性能分析”的相关文章。那么小编在网络上搜集了一些有关“oracle数据库性能分析””的相关内容,希望姐妹们能喜欢,咱们快快来学习一下吧!从 v$sysstat 视图中可以找出Session 使用CPU 的情况,例如,可以统计Parse CPU to totalCPU ratio:该项显示总的CPU 花费在执行及解析上的比率。如果这项比率较低,说明系统执行了太多的解析。
总的 CPU 花费在执行及解析上的比率 = 1 - (parse time cpu / CPU used by this session),可通过以下SQL 语句统计出该项数据。
select 1-(a.value/b.value)
from v$sysstat a,v$sysstat b
where a.name='parse time cpu' and
b.name='CPU used by this session';
如果发现CPU 使用比较多,可用以下语句进一步找出使用CPU 多的用户Session:
select a.sid,spid,status,substr(a.program,1,40)
prog,a.terminal,osuser,value/60/100 value
from v$session a,v$process b,v$sesstat c
where c.statistic#=12
and c.sid=a.sid
and a.paddr=b.addr
order by value desc;
注意:
SQL 语句中的12 是指cpu used by this session。
再进一步找出使用CPU 多的SQL 语句,可查找指定SPID 正在执行的SQL 语句:
SELECT P.pid pid,S.sid sid,P.spid spid,S.username username,S.osuser
osname,P.serial#
S_#,P.terminal,P.program
program,P.background,S.status,RTRIM(SUBSTR(a.sql_text, 1, 80)) SQL
FROM v$process P, v$session S,v$sqlarea A
WHERE P.addr = s.paddr
AND S.sql_address = a.address (+)
AND P.spid LIKE '%&1%';
注意:
在Linux 环境中可以通过ps 查看进程信息,包括pid;而Windows 中任务管理器的PID与Oracle 的v$process 中的pid 不能一一对应。Windows 是多线程服务器,每个进程包含一系列线程,这点与UNIX 等不同,UNIX 每个Oralce 进程独立存在,在NT 上所有线程由Oralce 进程衍生。
也可以指定SID 查看正在执行的SQL 语句:
也可以指定SID 查看正在执行的SQL 语句:
SELECT P.pid pid,S.sid sid,P.spid spid,S.username username,S.osuser
osname,P.serial#
S_#,P.terminal,P.program
program,P.background,S.status,RTRIM(SUBSTR(a.sql_text, 1, 80)) SQL
FROM v$process P, v$session S,v$sqlarea A
WHERE P.addr = s.paddr
AND S.sql_address = a.address (+)
AND s.sid = '136';
标签: #oracle数据库性能分析