问题描述
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。
有什么办法可以找出答案吗?
如果不是,那么上述情况对申请有什么影响?
我们如何缓解这种锁定情况?
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来解决会话有什么锁。例如,我经常使用的基本脚本是:
以下是一些缓解策略
您还可以使用资源管理器终止非活动但正在阻止活动资源的会话。
见
https://docs.oracle.com/database/122/ADMIN/managing-resources-with-oracle-database-resource-manager.htm#ADMIN11862
有关MAX_IDLE_BLOCKER_TIME指令的详细信息。
例如-在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进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




