现在的位置: 首页 > 数据库 > 正文

Oracle实例占用超高CPU排查

2020年01月10日 数据库 ⁄ 共 774字 ⁄ 字号 评论关闭

  CPU主要功能:处理指令、执行操作、要求进行动作、控制时间、处理数据。

  结合数据库实例CPU占用高,可能的原因是数据库在执行大量的操作(全表查询、大量排序等)。

  由于公司没有DBA,遇到数据库问题只能自己排查。

是否存在死锁

  查询死锁以及解锁的语句参考下方:

  查看死锁ID

  SELECTs.username,l.OBJECT_ID,l.SESSION_ID,s.SERIAL#,

  l.Oracle_USERNAME,l.OS_USER_NAME,l.PROCESSFROMV$LOCKED_OBJECT

  l,V$SESSIONSWHEREl.SESSION_ID=S.SID;

  查看表名称

  selectb.owner,b.object_name,a.session_id,a.locked_modefromv$locked_objecta,dba_objectsbwhereb.object_id=a.object_id;

  手工关闭死锁

  altersystemkillsession‘sid,serial#’;(其中sid=l.session_id)

  通过查询死锁也发现了一些死锁,杀掉后CPU没有降下来,只能重新排查。

  借助PLSQL查询定时job和session

  通过PL/SQL查询到,不存在定时的JOB执行。

  通过Tools-Sessions,发现存在较多数据库连接与访问,但较难定位到具体那个sql或表存在问题。

  于是,Kill了所有Session,CPU得到缓解,但根本原因未查到,隔几分钟又反复了。

过程总结

  造成CPU暴增的原因有很多,思路也有很多,后续如果遇到可以参考上述思路,精准定位到问题并进行优化。

  结束语:以上就是关于Oracle实例占用超高CPU排查的全部内容,更多内容请关注学步园。

抱歉!评论已关闭.