暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Oracle 非活动会话正在阻止活动会话

askTom 2017-11-12
477

问题描述

DBA抛出信息如下
06112017:11:00:09 WELOPP @ n1pv97/46581 (会话 =('300,19867') 状态 = 非活动sqlid =>) 阻止WELOPP @ n1pv97/45876 (会话 =('1803,10683')
状态 = 活动sqlid = fp5x2quh0zpqk) 持续91850秒。

06112017:11:00:09 WELOPP @ n1pv97/46581 (会话 =('300,19867') 状态 = 非活动sqlid =>) 阻止WELOPP @ n1pv97/59864 (会话 =('843,58185')
状态 = 活动sqlid = fp5x2quh0zpqk) 持续5388秒。

如上所述,它说非活动会话正在阻止活动会话。DBA只提供这么多信息。
现在我想了解什么sql阻止了活动会话中的sql。
有什么办法可以找出答案吗?
如果不是,那么上述情况对申请有什么影响?
我们如何缓解这种锁定情况?

专家解答

并非真的是因为它不是阻止活动会话的 * SQL *,而是 * lock *。

例如-在1行表中:

会话1做:

-删除行
-插入新行
-更新该行
-对其他表运行500查询
-去吃午饭

会话2出现了,试图对那一行做一些事情,并被阻止 ....它并不是真正阻止它们的SQL-它可以是上述前三个中的任何一个,但它们可能在数小时前就已运行。

你可以通过检查v $ lock来解决会话有什么锁。例如,我经常使用的基本脚本是:

--
-- an example locked row
--
SQL> delete from t_target where rownum = 1;

1 row deleted.

SQL> SELECT  /*+ ORDERED */
  2          s.username,
  3          s.osuser,
  4          S.SID,
  5          L.TYPE,
  6          L.ID1,
  7          o.object_name,
  8          DECODE(L.LMODE, 0, 'NONE', 1, 'NULL', 2, 'SS', 3, 'RX', 4, 'S', 5, 'SRX', 6, 'X', '?') holding,
  9          DECODE(L.REQUEST, 0, 'NONE', 1, 'NULL', 2, 'SS', 3, 'RX', 4, 'S', 5, 'SRX', 6, 'X', '?') wanting,
 10          l.ctime how_long,
 11          decode(l.block,0,null,2,null,'YES') is_blocking
 12  FROM V$SESSION S, V$LOCK L, sys.dba_objects o
 13  WHERE L.SID=S.SID
 14  AND S.USERNAME is not null
 15  and l.type != 'AE'
 16  and l.id1 = o.object_id
 17  /

USERNAME             OSUSER                                SID TY        ID1 OBJECT_NAME                              HOLD WANT   HOW_LONG IS_
-------------------- ------------------------------ ---------- -- ---------- ---------------------------------------- ---- ---- ---------- ---
MCDONAC              XPS13\hamcdc                           23 TM     166581 T_TARGET                                 RX   NONE         76

2 rows selected.


以下是一些缓解策略







您还可以使用资源管理器终止非活动但正在阻止活动资源的会话。



https://docs.oracle.com/database/122/ADMIN/managing-resources-with-oracle-database-resource-manager.htm#ADMIN11862

有关MAX_IDLE_BLOCKER_TIME指令的详细信息。
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论