2020-03-13
数据库11G RAC经常发生阻塞现象,无法定位源头
30M数据库环境:oracle11g RAC
这段时间数据库经常过几天就发生阻塞现象,每次杀掉阻塞的进程后其他被阻塞进程就开始正常运行,但是过几天又会有这类情况发生。查看数据库定时任务也没发现该任务,而且该任务进程一直只会在第一个节点出现。
涉及sql查询```language
--```注: 如果state值为Waiting,那么wait_time值无用。Second_in_wait值是实际的等待时间(单位:秒)。
--如果state值为Wait unknow time,那么wait_time值和Second_in_wait值都无用。
--如果state值为Wait short time,那么wait_time值和Second_in_wait值都无用。
--如果state值为Waiting known time,那么wait_time值就是实际等待时间(单位:秒),Second_in_wait值无用。
SELECT INST_ID "实例ID",
SID,
SERIAL#,
PROCESS,
USERNAME,
SCHEMANAME,
OSUSER,
MACHINE,
PROGRAM,
SQL_ID,
MODULE,
ACTION,
LOCKWAIT,
BLOCKING_SESSION_STATUS,
BLOCKING_INSTANCE "阻塞会话实例",
BLOCKING_SESSION "阻塞会话SID",
EVENT "等待事件",
WAIT_CLASS,
LOGON_TIME,
CASE
WHEN STATE = 'WAITING' THEN
SECONDS_IN_WAIT
WHEN STATE = 'WAITING KNOWN TIME' THEN
WAIT_TIME
END AS "等待时间(s)",
STATE
FROM GV$SESSION
WHERE USERNAME IS NOT NULL
AND STATUS = 'ACTIVE'
AND LOCKWAIT IS NOT NULL;
```--查看阻塞会话SID信息(holder)
--```考虑到多实例会存在sid一致的情况,所以加了实例区分
SELECT INST_ID "实例ID",
SID,
SERIAL#,
PROCESS,
USERNAME,
SCHEMANAME,
OSUSER,
MACHINE,
PROGRAM,
SQL_ID,
MODULE,
ACTION,
LOCKWAIT,
BLOCKING_SESSION_STATUS,
BLOCKING_INSTANCE,
BLOCKING_SESSION "阻塞会话SID",
EVENT "等待事件",
WAIT_CLASS,
LOGON_TIME,
CASE
WHEN STATE = 'WAITING' THEN
SECONDS_IN_WAIT
WHEN STATE = 'WAITING KNOWN TIME' THEN
WAIT_TIME
END AS "等待时间(s)",
STATE
FROM GV$SESSION
WHERE INST_ID = '&INSTANCE'
and SID = '&SID';
–监控图
–被阻塞(waiter)相关截图

–阻塞源头信息(waiter)

–定时任务截图

问题:看阻塞源头上写着dbms_scheduler,以为是定时任务,但是在定时任务dba_scheduler和dba_jobs是找不到定时任务(business_data_purge)的,而且这个任务是大概几天会跑一次,每次只会在第一个实例上运行,无法定位到具体在哪个位置。
前几天试过把被阻塞的定时任务(purge_auto_mark)停了,但是今天发现应用很多进程还是被阻塞源头的任务(business_data_purge)阻塞了
我来答
添加附件
收藏
分享
问题补充
5条回答
默认
最新
回答交流
提交
问题信息
请登录之后查看
附件列表
请登录之后查看
邀请回答
暂无人订阅该标签,敬请期待~~
墨值悬赏

评论
