我是靠谱客的博主 淡淡奇迹,最近开发中收集的这篇文章主要介绍oracle 数据库负载高分析,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

数据库负载高故障排查处理:
问题描述:查看数据库负载高达20左右,大量进程占用cpu较高
问题分析:多个单进程占用cpu较高,一般为索引失效,sql复杂查询数据量大或存在锁行,锁表等
,分析数据库dwr报告:
发现大量的行级锁,已经锁等待占用cpu较高,查询数据库锁:select t2.username,t2.sid,t2.serial#,t2.logon_time,event
from v$locked_object t1,v$session t2
where 
t1.se ssion_id=t2.sid order by t2.logon_time desc
发现大量的行级锁

查询锁的进程对应的SQL语句为:
select /*+ ORDERED*/
 sql_text
  from v$sqltext a
 where (a.hash_value, a.address) in
       (select DECODE(sql_hash_value, 0, prev_hash_value, sql_hash_value),
               DECODE(sql_hash_value, 0, prev_sql_addr, sql_address)
          from v$session b
         where b.sid='897')
查出结果为:
数据库某块逻辑存在大量行级锁
行级锁导致原因大致分为以下几种:
1、不同的session同时更新或删除同一个记录
2、表上存在主键或唯一索引,会话1插入一个值(未提交),会话2同时或随后也插入同样的值
3、更新位图索引的一个键值,会指向多行记录,所以更新一行就会把该键值指向的所有行锁定
经排查为第一种情况导致,深入分析为恒通宜信网关多条数据返回同一
个sendid,大并发情况下,更新同一行记录,导致行级锁引发的数据库负载剧增
问题处理:
避免多线程同时操作同一行记录即可

最后

以上就是淡淡奇迹为你收集整理的oracle 数据库负载高分析的全部内容,希望文章能够帮你解决oracle 数据库负载高分析所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(58)

评论列表共有 0 条评论

立即
投稿
返回
顶部