加入收藏 | 设为首页 | 会员中心 | 我要投稿 商洛站长网 (https://www.0914zz.com/)- AI应用、CDN、边缘计算、云计算、物联网!
当前位置: 首页 > 数据库 > Oracle > 正文

如何查询占CPU高的oracle进程

发布时间:2020-11-17 01:05:11 所属栏目:Oracle 来源:互联网
导读:oracle占用cpu过高怎么处理,本文将介绍有关oracle进程CPU占用率过高的问题,需要了解跟多的朋友可以参考下

oracle占用cpu过高怎么处理,本文将介绍有关oracle进程CPU占用率过高的问题,需要了解跟多的朋友可以参考下
1:首先使用TOP命令传到占用CPU高的SPID号
PID USERNAME THR PRI NICE SIZE RES STATE TIME CPU COMMAND
3575 oracle 1 12 0 0K 0K run 748.6H 24.98% oracle
3571 oracle 1 22 0 0K 0K sleep 706.2H 22.84% oracle 2:使用DBA账户登录数据库,使用以下SQL语句查询:
SELECT FROM V$PROCESS WHERE spid=3575;查询到SQL相关信息
3:根据以上查询到的信息使用以下SQL查询:
SELECT sid,program FROM V$SESSION S WHERE EXISTS(SELECT 1 FROM V$PROCESS WHERE spid=3575 AND ADDR = S.PADDR);
可以查询到具体那个客户端查询一直在不断占用ORACLE资源!
最后对这个查询进行处理! 4.根据SID查得SQLITPUB
<div class="codetitle"><a style="CURSOR: pointer" data="43978" class="copybut" id="copybut43978" onclick="doCopy('code43978')"> 代码如下:<div class="codebody" id="code43978">
select sql_textITPUB
from v$sqltext
where a.hashvalue=(select sql_hash_value
from v$session b
where b.SID='&sid')
0order by piece ASC;

根据lockwait字段可以查询当前正在等待的锁的相关信息:
<div class="codetitle"><a style="CURSOR: pointer" data="35692" class="copybut" id="copybut35692" onclick="doCopy('code35692')"> 代码如下:<div class="codebody" id="code35692">
select
from v$lock where kaddr in (select lockwait from v$session where sid= $sid);
(sql_address,sql_hash_value),(prev_sql_addr,prev_hash_value) 根据这两组字段,可以查询到当前session正在执行的或最近一次执行的sql语句的详细信息:
select * from v$sqltext where address = &sql_address and hash_value = &sql_hash_value;

根据PID查SQL相关信息:
<div class="codetitle"><a style="CURSOR: pointer" data="13666" class="copybut" id="copybut13666" onclick="doCopy('code13666')"> 代码如下:<div class="codebody" id="code13666">
select id,serial#,username,osuser,machine,program,process,to_char(logon_time,'yyyy/mm/dd hh24:mi:ss') logon from v$session where paddr in ( select addr from v$process where spid in('&pid'));

根据PID查SQL语句
<div class="codetitle"><a style="CURSOR: pointer" data="53187" class="copybut" id="copybut53187" onclick="doCopy('code53187')"> 代码如下:<div class="codebody" id="code53187">
SELECT a.username,a.machine,a.program,a.sid,a.serial#,a.status,c.piece,c.sql_text FROM v$session a,v$process b,v$sqltext c WHERE b.spid='&spid' AND b.addr=a.paddr AND a.sql_address=c.address(+) ORDER BY c.piece;

得到进程的sid号:
<div class="codetitle"><a style="CURSOR: pointer" data="13666" class="copybut" id="copybut13666" onclick="doCopy('code13666')"> 代码如下:<div class="codebody" id="code13666">
select id,'yyyy/mm/dd hh24:mi:ss') logon from v$session where paddr in ( select addr from v$process where spid in('&pid'));

得到session的sqltext语句:
<div class="codetitle"><a style="CURSOR: pointer" data="16870" class="copybut" id="copybut16870" onclick="doCopy('code16870')"> 代码如下:<div class="codebody" id="code16870">
select sql_text from v$sqltext_with_newlines where hash_value in (select SQL_HASH_VALUE from v$session where paddr in (select addr from v$process where spid= '&pid')) order by piece;

(编辑:商洛站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读