Oracle中查看引起Session阻塞的2个脚本分享
用户A执行删除,但是没有提交。
SQL>deletefromtestwhereobject_id<10;
已删除8行。
用户B执行删除或者更新id<10的记录,则被阻塞。
SQL>updatetestsetflag='N'whereobject_id<10;
遇到这种阻塞,首先需要确定问题。可以使用以下脚本。
selectt2.username,t2.sid,t2.serial#,t2.logon_time fromv$locked_objectt1,v$sessiont2 wheret1.session_id=t2.sidorderbyt2.logon_time;
结果如下:
USERNAME SID SERIAL#LOGON_TIME ---------------------------------------------------------------- LIHUILIN 14 8709-11月-13 LIHUILIN 139 65509-11月-13
或者使用
select (selectusernamefromv$sessionwheresid=a.sid)blocker, a.sid,'isblocking', (selectusernamefromv$sessionwheresid=b.sid)blockee, b.sid fromv$locka,v$lockb wherea.block=1andb.request>0anda.id1=b.id1anda.id2=b.id2;
结果如下:
BLOCKER SID'ISBLOCKING' BLOCKEE SID --------------------------------------------------------------------------------------------- LIHUILIN 14 isblocking LIHUILIN 139
Kill引起阻塞的Session
select'altersystemkillsession'''||sid||','||serial#||''';'cmdfromv$sessionwhereusername='LIHUILIN'andsid=14;
结果如下:
CMD ----------------------------------------- altersystemkillsession'14,87';
最后执行altersystem命令,阻塞解除。
热门推荐
10 财运虎年祝福语简短语
11 单亲爸爸春节祝福语简短
12 狗狗上厕所训练
13 植物种植祝福语简短
14 翻译考试祝福语朋友简短
15 个人周年庆简短祝福语
16 狗狗怎么训练
17 分别祝福语简短搞笑英文
18 生日广州男生祝福语简短