定位锁等待问题
查看被挂起的事务(TRX_ID)
SELECT VTW.ID AS TRX_ID, VS.SESS_ID ,VS.SQL_TEXT,VS.APPNAME ,VS.CLNT_IP FROM V
T
R
X
W
A
I
T
V
T
W
L
E
F
T
J
O
I
N
V
TRXWAIT VTW LEFT JOIN V
TRXWAITVTWLEFTJOINVTRX VT ON
(VTW.ID=VT.ID) LEFT JOIN V$SESSIONS VS ON (VT.SESS_ID=VS.SESS_ID);
通过挂起事务ID(TRX_ID)找到它等待的事务(WAIT_FOR_ID)。
SELECT WAIT_FOR_ID,WAIT_TIME FROM V$TRXWAIT WHERE ID=321646;
通过等待事务ID(WAIT_FOR_ID)定位到连接以及执行的语句
SELECT VT.ID AS TRX_ID,VS.SESS_ID,VS.SQL_TEXT ,VS.APPNAME,VS.CLNT_IP FROM
V
T
R
X
V
T
L
E
F
T
J
O
I
N
V
TRX VT LEFT JOIN V
TRXVTLEFTJOINVSESSIONS VS ON (VT.SESS_ID=VS.SESS_ID) WHERE
VT.ID = 321643;
SP_CLOSE_SESSION关闭等待事务(SESS_ID)
SP_CLOSE_SESSION(142344256);
另一种查找锁等待的方式
select * from v
t
r
x
w
a
i
t
;
s
e
l
e
c
t
∗
f
r
o
m
v
trxwait; select * from v
trxwait;select∗fromvlock t where t.blocked =1;
select a.sess_id, a.sql_text, a.state, b.* from v
s
e
s
s
i
o
n
s
a
,
v
sessions a, v
sessionsa,vtrxwait b
where a.trx_id = b.id;
select a.trx_id,a.* from v$sessions a;
commit;
select * from sys.sysobjects t where id= 1069;
sp_close_session(131853344); --结束某个会话