暂无图片
数据库11G RAC经常发生阻塞现象,无法定位源头
我来答
分享
黄伟波
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';

–监控图监控图.png

–被阻塞(waiter)相关截图被阻塞lock.png

被阻塞lock2.png
–阻塞源头信息(waiter)
阻塞源头.png
–定时任务截图
定时任务截图.png

问题:看阻塞源头上写着dbms_scheduler,以为是定时任务,但是在定时任务dba_scheduler和dba_jobs是找不到定时任务(business_data_purge)的,而且这个任务是大概几天会跑一次,每次只会在第一个实例上运行,无法定位到具体在哪个位置。
前几天试过把被阻塞的定时任务(purge_auto_mark)停了,但是今天发现应用很多进程还是被阻塞源头的任务(business_data_purge)阻塞了

我来答
添加附件
收藏
分享
问题补充
5条回答
默认
最新
黄伟波
升级问题到: 紧急故障
暂无图片 评论
暂无图片 有用 0
黄伟波
暂无图片 评论
暂无图片 有用 0
你好我是李白

https://www.modb.pro/db/1650
可以看看这篇文档,看看对你有没有帮助

暂无图片 评论
暂无图片 有用 0
黄伟波

我的问题不是在于这个等待事件,而是不知道是不是应用还是具体在哪个位置?没法去停这个任务…

暂无图片 评论
暂无图片 有用 0
Uncopyrightable

升级数据库再优化吧

暂无图片 评论
暂无图片 有用 0
回答交流
提交
问题信息
请登录之后查看
附件列表
请登录之后查看
邀请回答
暂无人订阅该标签,敬请期待~~
暂无图片墨值悬赏