Oracle实例占用超高CPU排查[通俗易懂]

Oracle实例占用超高CPU排查[通俗易懂]CPU主要功能:处理指令、执行操作、要求进行动作、控制时间、处理数据。 结合数据库实例CPU占用高,可能的原因是数据库在执行大量的操作(全表查询、大量排序等)。 由于公司没有DBA,遇到数据库问题只能

Oracle实例占用超高CPU排查

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

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

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

一、是否存在死锁

查询死锁以及解锁的语句参考下方:
  • 查看死锁ID
SELECT s.username,l.OBJECT_ID,l.SESSION_ID,s.SERIAL#,
l.Oracle_USERNAME,l.OS_USER_NAME,l.PROCESS FROM V$LOCKED_OBJECT
l,V$SESSION S WHERE l.SESSION_ID=S.SID;
  • 查看表名称
select b.owner,b.object_name,a.session_id,a.locked_mode  from v$locked_object a,dba_objects b  where b.object_id = a.object_id; 

  • 手工关闭死锁
alter system kill session ‘sid,serial#’; (其中sid=l.session_id) 
通过查询死锁也发现了一些死锁,杀掉后CPU没有降下来,只能重新排查。

二、借助PLSQL查询定时job和session

通过PL/SQL查询到,不存在定时的JOB执行。
通过Tools-Sessions,发现存在较多数据库连接与访问,但较难定位到具体那个sql或表存在问题。
于是,Kill了所有Session,CPU得到缓解,但根本原因未查到,隔几分钟又反复了。

三、查询数据库中的等待事件

SELECT P.PID,
S.SID,
S.SERIAL#,
S.USERNAME,
Q.SQL_ID,
Q.SQL_TEXT,
Q.SQL_FULLTEXT,
W.EVENT,
W.WAIT_TIME,
W.STATE,
CASE
WHEN W.STATE = “WAITING” THEN
W.SECONDS_IN_WAIT
WHEN W.STATE = “WAITING KNOWN TIME” THEN
W.WAIT_TIME
END AS SEC_IN_WAIT
FROM V$SESSION S, V$SESSION_WAIT W, V$SQLAREA Q, V$PROCESS P
WHERE S.SID = W.SID
AND S.SQL_ID = Q.SQL_ID
AND P.ADDR = S.PADDR
AND W.EVENT NOT LIKE “SQL*Net%”
AND S.USERNAME IS NOT NULL
AND W.WAIT_TIME >= 0
ORDER BY W.WAIT_TIME DESC;

发现存在等待事件,分析待执行的SQL发现存在多表(百万数据)全量关联查询。

于是对数据以及SQL进行了相应优化,CPU占用较高问题得到根本解决。

四、过程总结

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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
转载请注明出处: https://daima100.com/10257.html

(0)
上一篇 2023-01-22
下一篇 2023-01-22

相关推荐

  • Python在Mac上的安装

    Python在Mac上的安装Python是一种广泛使用的高级编程语言,它支持面向对象编程、函数式编程和结构化编程等多种编程范式。它的跨平台性、易于学习和开发快速等特性,让Python成为各种领域开发和科学计算的首选语言。在Mac系统中安装Python也是非常容易的,接下来我们将详细介绍Python在Mac上的安装步骤。

    2024-06-06
    52
  • Python判断不为空

    Python判断不为空Python是一门高级编程语言。该语言是一种特殊的语言,因为它具有简单易学、可读性强和开发速度快等特点。在Python中,你可以使用各种方法进行条件检查和控制流程,包括判断一个字符串、列表或其他数据类型是否为空。本文将从各个方面详细介绍如何在Python中判断不为空。

    2024-06-07
    49
  • if函数判断周末_SQL日期语句大全

    if函数判断周末_SQL日期语句大全小朋友作业操碎心,看代码: use test; delimiter $$ create procedure pre12() BEGIN declare issunday int; declare d…

    2022-12-19
    135
  • 安装mysql应用程序无法正常启动_mysql介绍

    安装mysql应用程序无法正常启动_mysql介绍下载并解压MySQL 下载mysql-8.0.17-win64 https://dev.mysql.com/downloads/mysql/8.0.html // 这里提供的是8.0以上x64版本

    2022-12-23
    142
  • Mysql开启日志功能「建议收藏」

    Mysql开启日志功能「建议收藏」mysql开启日志功能 mysql日志介绍 mysql有以下几种日志: 错误日志: -log-err 查询日志: -log 慢查询日志: -log-slow-queries 更新日志: -log-u…

    2023-03-22
    162
  • Linux内核参数-共享内存「建议收藏」

    Linux内核参数-共享内存「建议收藏」在数据库配置过程中经常会遇到系统内核参数配置,而其中比较关键的有关于共享内存参数的配置,下面先将其中用到的参数的英文解释摘下来,再结合数据库再谈谈对其中的理解。 kernel.shmall This…

    2023-01-26
    139
  • python按月和季度统计(python如何将季度数据变月底数据)

    python按月和季度统计(python如何将季度数据变月底数据)设置索引字段。在开始提取数据前,先将member_id列设置为索引字段。然后开始提取数据。

    2023-11-25
    124
  • 如何处理慢sql_方法论原则通常包括

    如何处理慢sql_方法论原则通常包括本文介绍了笔者实际工作中慢SQL治理的方法论,1、发现:如何发现慢SQL。2、定位:如何定位到慢SQL写在哪。3、分析:遇到慢SQL时的分析思路。4、解决:慢SQL的解决思路。

    2023-05-10
    142

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注