oracle数据库操作系统CPU利用率居高不下

背景现象:
应用系统响应速度慢,常因为堵塞锁过多导致系统堵死,应用无法使用。用top命令查看,CPU利用率居高不下
CPU利用率居高不下

处理过程:

  1. 查看oracle的等待事件,select event,count(*) from v$session_wait group by event;发现有21个latch: Cache buffers chains事件,latch是内存的争用导致
    latch事件
  2. 确认为latch: cache buffers chains引起的故障后,查看latch的命中率
    SQL>SELECT name, gets, misses/gets, sleeps,
    immediate_gets, immediate_misses
    FROM v$latch
    WHERE name = ‘cache buffers chains’;

各列名称意义如下

NAME:latch名称
IMMEDIATE_GETS:以Immediate模式latch请求数
GETS:以Willing to wait请求模式latch的请求数
SPIN_GETS:第一次尝试失败,但在以后的轮次中成功
WAIT_TIME:花费在等待latch的时间
这里需要注意MISSES/GETS如果在达10%左右,则说明有比较严重的latch争用


查找问题sql_id

SELECT *
  FROM (SELECT COUNT(*),
               SQL_ID,
               NVL(O.OBJECT_NAME, ASH.CURRENT_OBJ#) OBJN,
               SUBSTR(O.OBJECT_TYPE, 0, 10) OTYPE,
               CURRENT_FILE# FN,
               CURRENT_BLOCK# BLOCKN
          FROM V$ACTIVE_SESSION_HISTORY ASH, ALL_OBJECTS O
         WHERE EVENT LIKE 'latch: cache buffers chains'
           AND O.OBJECT_ID(+) = ASH.CURRENT_OBJ#
         GROUP BY SQL_ID,
                  CURRENT_OBJ#,
                  CURRENT_FILE#,
                  CURRENT_BLOCK#,
                  O.OBJECT_NAME,
                  O.OBJECT_TYPE
         ORDER BY COUNT(*) DESC)
 WHERE ROWNUM <= 10;
--sql_id对应sql
select sql_fulltext from v$sqlarea where sql_id='&sqlid';

找出对应sql语句,分析其执行计划,根据业务进行针对性优化,最终问题解决

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值