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

相关推荐

  • Linux 上安装 PostgreSQL

    Linux 上安装 PostgreSQL 打开 PostgreSQL 官网 https://www.postgresql.org/,点击菜单栏上的 Download ,可以看到这里包含了很多平台的安装包,包括 Linux、Windo…

    2023-03-28
    97
  • Redis(一)安装[通俗易懂]

    Redis(一)安装[通俗易懂]Redis(一)安装 我使用的是Centos8.1和redis6.2.6 Redis的官方网站地址:https://redis.io/ 1.安装gcc依赖 在root用户下执行 yum install

    2023-06-17
    106
  • linux redis部署_redis部署安装

    linux redis部署_redis部署安装redis在linux上的部署 1.在官网下载Linux版本redis 2.拷贝到linux服务器上,解压到指定目录 3.解压后得到redis文件夹 移动到自己知道的文件位置 4.注:redis是c语

    2023-05-06
    99
  • 数据库 国产化_数据库厂商

    数据库 国产化_数据库厂商’天底下没有完美的数据库,也许Oracle是个例外”,前阵子几个DBA在讨论国产化替代时,有人就这么说。确实是的,Oracle算是比较完美的数据库产品了,不过现在很多用户都在面临从Oracle数据库向

    2023-06-20
    102
  • 数据库发展史(上)

    数据库发展史(上)数据库技术是信息技术领域的核心技术之一,几乎所有的信息系统都需要使用数据库系统来组织、存储、操纵和管理业务数据。数据库领域也是现代计算机学科的重要分支和研究方向。目前,在数据库领域已经产生了四位图灵…

    2023-04-12
    105
  • CentOS6 用yum安装mysql详解,简单实用

    CentOS6 用yum安装mysql详解,简单实用一、查看CentOS下是否已安装mysql 输入命令 :yum list installed | grep mysql 二、删除已安装mysql 输入命令: yum -y remove mysql 如

    2023-01-24
    110
  • 《SQL必知必会》学习笔记整理

    《SQL必知必会》学习笔记整理简介 本笔记目前已包含 《SQL必知必会》中的所有章节。 我在整理笔记时所考虑的是:在笔记记完后,当我需要查找某个知识点时,不需要到书中去找,只需查看笔记即可找到相关知识点。因此在整理笔记时

    2023-04-14
    103
  • 腾讯云TDSQL监控库密码忘记问题解决实战[亲测有效]

    腾讯云TDSQL监控库密码忘记问题解决实战[亲测有效]首先,给大家介绍一下TDSQL。TDSQL MySQL 版(TDSQL for MySQL)是腾讯打造的一款分布式数据库产品,具备强一致高可用、全球部署架构、分布式水平扩展、高性能、企业级安全等特性,

    2023-04-20
    103

发表回复

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