达梦数据库如何定位锁等待问题解决方法
定位锁等待问题
查看被挂起的事务(TRX_ID)
SELECT VTW.ID AS TRX_ID, VS.SESS_ID ,VS.SQL_TEXT,VS.APPNAME ,VS.CLNT_IP FROM VTRXWAITVTWLEFTJOINVTRXWAIT VTW LEFT JOIN VTRXWAITVTWLEFTJOINVTRX 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
VTRXVTLEFTJOINVTRX VT LEFT JOIN VTRXVTLEFTJOINVSESSIONS VS ON (VT.SESS_ID=VS.SESS_ID) WHERE
VT.ID = 321643;
SP_CLOSE_SESSION关闭等待事务(SESS_ID)
SP_CLOSE_SESSION(142344256);
另一种查找锁等待的方式
select * from vtrxwait;select∗fromvtrxwait;
select * from vtrxwait;select∗fromvlock t where t.blocked =1;
select a.sess_id, a.sql_text, a.state, b.* from vsessionsa,vsessions a, vsessionsa,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); --结束某个会话
更多推荐
所有评论(0)