ITPub博客

首页 > 数据库 > Oracle > Oracle 阻塞

Oracle 阻塞

Oracle 作者:winnzheng 时间:2024-02-06 17:32:19 0 删除 编辑

确认存在被阻塞的会话

select * from dba_blockers;

确认哪个会话阻塞了其他会话

select l1.sid, ‘ IS BLOCKING ‘, l2.sid

from v$lock l1, v$lock l2

where l1.block =1 and l2.request > 0

and l1.id1=l2.id1

and l1.id2=l2.id2

----------------------------------------------

select s1.username || ‘@’ || s1.machine

|| ‘ ( SID=’ || s1.sid || ‘ )  is blocking ‘

|| s2.username || ‘@’|| s2.machine || ‘ ( SID=’ || s2.sid || ‘ ) ‘ AS blocking_status

from v$lock l1, v$session s1, v$lock l2, v$session s2

where s1.sid=l1.sid and s2.sid=l2.sid

and l1.BLOCK=1 and l2.request > 0

and l1.id1 = l2.id1

and l2.id2 = l2.id2 ;

——————————————————

ID2为对应的object id

select * from v$lock ;

select object_name from dba_objects where object_id=307193;

查找阻塞其他会话对应的行。

select do.object_name,

row_wait_obj#, do.data_object_id, row_wait_file#, row_wait_block#, row_wait_row#,

dbms_rowid.rowid_create ( 1, do.data_object_id, ROW_WAIT_FILE#, ROW_WAIT_BLOCK#, ROW_WAIT_ROW# )

from v$session s, dba_objects do

where sid=252

and s.ROW_WAIT_OBJ# = do.OBJECT_ID ;

select * from obj1 where rowid=’ AABK/5AAFAAAAHHAAA’ ;

————————————————————

查找阻塞其他会话的会话正在执行的SQL

select s.sid, q.sql_text from v$sqltext q, v$session s

where q.address = s.sql_address

and s.sid = 252;

kill 会话

Select blocking_session, sid, serial#, wait_class,seconds_in_wait From v$session where blocking_session is not NULL order by blocking_session;

alter system kill session 244,11049′ immediate;


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/70031606/viewspace-3006496/ ,如需转载,请注明出处,否则将追究法律责任。

上一篇: Oracle DG 日常点检
下一篇: oracle 内存建议
请登录后发表评论 登录
全部评论
Happy --开心 Appreciation --心怀感恩 Passion --激情四溢 Performance --出类拔萃 Young --充满活力

注册时间:2023-09-04

  • 博文量
    30
  • 访问量
    24390