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暴增的原因有很多,思路也有很多,后续如果遇到可以参考上述思路,精准定位到问题并进行优化。

Oracle实例占用超高CPU排查的更多相关文章

  1. [20191115]oracle实例占用内存计算.txt

    [20191115]oracle实例占用内存计算.txt --//以前学习oracle数据库时,总想了解实例占用内存多少,我曾经在一些会议底下问过一位高手,对方说计算这个相对很难,许多东西是共享的.- ...

  2. linux Java项目CPU内存占用高故障排查

    linux Java项目CPU内存占用高故障排查 top -Hp 进程号 显示进程中每个线程信息,配合jstack定位java线程运行情况 # 线程详情 jstack 线程PID # 查看堆内存中的对 ...

  3. centos7-java模拟cpu占用高及排查

    环境 centos7 1核2GB Java8 模拟cpu占用高 新建一个名为jvm-learn的springboot项目 模拟代码如下 import org.springframework.boot. ...

  4. VPS/云主机CPU占用100%故障排查

    VPS/云主机CPU占用100%故障排查 方法/步骤 通常情况下云主机/VPS的CPU一般不会占用100%,内存资源也不会占完.若您的服务器经常CPU资源100%,可以打开任务管理器,查看是哪个进程引 ...

  5. oracle内存占用过高和修改不当无法启动oracle实例的解决办法

    今天,在自己机器上装了oracle 12c,发现Oracle的服务Oracle RDBMS Kenel  Executable (OracleServiceORCL)占用内存高达5G,本人电脑内存才1 ...

  6. CENTOS7-JAVA模拟CPU占用高及排查( 转)

    环境 centos7 1核2GB Java8 模拟cpu占用高 新建一个名为jvm-learn的springboot项目 模拟代码如下 import org.springframework.boot. ...

  7. oracle实例内存(SGA和PGA)调整

    修改oracle内存占用 >show parameter sga; (查看内存占用情况) NAME                                   TYPE          ...

  8. Oracle11g温习-第一章 1、ORACLE实例

    2013年4月27日 星期六 10:23 1.ORACLE 实例 System Global Area(SGA) 和 Background Process(后台进程) 称为数据库的实例. 2.ORAC ...

  9. 对oracle实例的内存(SGA和PGA)进行调整,优化数据库性

    一.名词解释 (1)SGA:SystemGlobal Area是OracleInstance的基本组成部分,在实例启动时分配;系统全局域SGA主要由三部分构成:共享池.数据缓冲区.日志缓冲区. (2) ...

随机推荐

  1. 解决Idea的Generate Sources无法生成QueryDSL问题

    今天是2020年第一天在家办公,就出现了跟在公司不一样的现象,deploy项目到maven库时失败,之前一直成功. 查到原因在于QueryDSL类没有生成,但为何在公司可以而在家里就不行呢? 鉴于Id ...

  2. tcpdump用法说明

    tcpdump采用命令行方式对接口的数据包进行筛选抓取,其丰富特性表现在灵活的表达式上. 不带任何选项的tcpdump,默认会抓取第一个网络接口,且只有将tcpdump进程终止才会停止抓包. 例如: ...

  3. sql 映射文件

                                                                                                        ...

  4. tmobst5

    (单选题)SQL语言又称为() A)结构化定义语言 B)结构化控制语言 C)结构化查询语言 D)结构化操纵语言 2.(单选题)只有满足联接条件的记录才包含在查询结果中,这种联接为( ) A)左联接 B ...

  5. QQ截图工具截取

    邮箱截图插件 TXGYMailCamera.dll(X86) Export: CameraWindow CameraSubArea CameraWindowLikeSpy 调用参数: rundll32 ...

  6. Codeforces_714_B

    http://codeforces.com/problemset/problem/714/B 当不同大小整数有1.2个时,肯定成立,3个时,需要判断,大于等于4个,则肯定不成立. #include & ...

  7. android 基础学习笔记3

    1.XML解析  与  Json 解析 (文件读取一般较耗时 可将相应的解析做成方法  用线程调用) 一.XML解析  (pull解析)res/xml(资源文件 需用到Resources) Xml文本 ...

  8. Bound Method and Unbound Method - 绑定方法 与 非绑定方法

    Bound Method and Unbound Method 通常有两种方法对类的方法(instance.method)/属性(class.attribute)进行引用, 一种称做 Bound Me ...

  9. 本地开发环境伪装成SSL连接的实现

    本地ssl开发测试实现1,在外网服务器上使用测试域名和t.test.cn,用let's encrypt申请 证书并正常运行2,修改本地服务器host文件,将t.kennylee.vip指向127.0. ...

  10. JDK14都要问世了,你还在用JDK8吗

    Java开发工具包(JDK)14已进入发布候选阶段,总体功能基本已确定.计划中的标准Java升级将具有新功能,例如JDK Flight Recorder事件流,模式匹配和开关表达式. JDK 14计划 ...