oracle平均活动会话数,Oracle-活动会话数剧增

1. 现象

某天收到一数据库活动会话数剧增不降,业务系统部分功能缓慢。

2. 分析

2.1 分析活动会话数变化趋势

2.2 抽一个时间点分析等待事件及SQL执行情况

select

to_char(ash.sample_time, ‘YYYY-MM-DD HH24:MI:SS‘) SAMPLE_TIME

,ash.sql_id

,ash.event

,count(*) CNT /* SQL的数量 **/

,TRUNC(SUM(TIME_WAITED) / 1000000,2) SECONDS_IN_WAIT /* SQL的等待时间 **/

,SUM(to_number(CAST(ash.sample_time AS DATE)-ash.sql_exec_start) *24*60*60 ) SECONDS_IN_EXECUTE /* SQL的执行时间 **/

from dba_hist_active_sess_history ash

where ash.instance_number=1

and ash.wait_class <> ‘Idle‘

and to_char(ash.sample_time,‘YYYY-MM-DD HH24:MI:SS‘) = ‘2016-12-01 09:28:27‘

group by

ash.sample_time

,ash.sql_id

,ash.event

having count(*) > 5

order by SAMPLE_TIME,4

;

-- 发现174r8w7amsr17,83zyfck594vfk SQL执行时间较长,特别是174r8w7amsr17这条语句执行5+分钟

2.3 分析语句执行过程

-- 发现session(1:4448,58047)阻塞了5个会话,下图

b3c53f4ae1b2cd7a1598b44c188ab1bc.png

2.4 分析下4448,58047会话的历史执行情况

-- session(1:4448,58047) 从2016-12-01 09:25:33 建立了一个事务 (xid = ‘02FB001B0000619A‘) 持续到 2016-12-01 09:47:49 , 至少22分钟里面执行 83zyfck594vfk 语句134次才提交,而每次执行时间挺小的,但整个事务执行时间过长,持续20多分钟时间。而且83zyfck594vfk 语句执行存在“BY LOCAL INDEX ROWID”回表或是“INDEX SKIP SCAN ”操作,而索引跳跃扫描的性能不好。需要优化。

2.5 分析174r8w7amsr17语句是被前面这类多个83zyfck594vfk SQL长时间事务阻塞

3. 处理方案

3.1 优化83zyfck594vfk语句的索引;

3.2 检查业务83zyfck594vfk功能模块,分割大事务成多个小事务,减少阻塞。

原文:https://www.cnblogs.com/binliubiao/p/12519914.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值