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

    xiaoxiao2021-03-26  38

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

    处理过程:

    查看oracle的等待事件,select event,count(*) from v$session_wait group by event;发现有21个latch: Cache buffers chains事件,latch是内存的争用导致 确认为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语句,分析其执行计划,根据业务进行针对性优化,最终问题解决

    转载请注明原文地址: https://ju.6miu.com/read-660057.html

    最新回复(0)