某系统负责人反应系统很慢,收集持续报警短信。
查看数据库当前活动回话等待事件为enq: SQ – contention,当前活动session 200+
enq: SQ – contention是sequence相关的锁,在内存上缓存(cache)范围内,调用sequence.nextval期间拥有此锁。
如果创建sequence时,cache值太小(默认是20(单位是“个”)),在调用sequence.nextval,内存事先cache值会很快耗尽。这时需要将数据字典信息物理修改,再次执行cache的工作。
在此期间。SQL会一直拥有SQ锁,许多会话同时为了获取SQ锁而发生争用。对应的等待事件就是enq: SQ – contention。随着session的增长等待时间也会一直持续
其实到这里我们基本上可以定位问题,当然解决问题还是需要按部就班
收集对应时间段的awr和ash如下:
ASH:
通过ASH可以定位到产生这个等待事件的SQL如下:
insert into t_ttt_pppppppddddinfo valus
(OPERDATE,
OPERSERIALNO,
CHANNELC