今天早上同事和我说:插入数据比较慢,我就将活动的会话关闭掉后,程序进行下去。后面他重启了应用后,插入的更快了一些。我考虑到可能是阻塞问题。
查询阻塞和被阻塞的sid
select t.sid 阻塞者, t2.sid 被阻塞者, t.type 阻塞类型
from v$lock t, v$lock t2
where t.block = '1'
and t.id1 = t2.id1
and t.id2 = t2.id2
and t.sid <> t2.sid;
/*在rac环境中block=2,代表全局冲突,那么就需要需该上面写的block=1,可以改成lmode=6*/
select ses.sid,ses.serial#
from v$session ses
where ses.sid in ('t.sid');
alter system kill session "sid,serial#";
查看其他被阻塞会话和操作语句
select t.sid,t.SERIAL#,t.status,t.osuser,t.MACHINE,t.type,t.logon_time,t1.sql_text
from v$session t, v$sql t1
where t.sql_address = t1.address
and t.sql_hash_value = t1.hash_value
and t.sid in (select t2.sid
from v$lock t3, v$lock t2
where t3.block = '1'
and t3.id1 = t2.id1
and t3.id2 = t2.id2
and t3.sid <> t2.sid);
由于同事已经将应用重启,暂时没有在生产环境中测试,遗憾。
由于同事已经将应用重启,暂时没有在生产环境中测试,遗憾。