为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。
【DM版本】:dm8
【操作系统】:麒麟系统arm架构
【CPU】:linux kylin-KylinOS_V10_sp1
【问题描述】*:偶尔出现,执行sql时,sql一直处于执行中,查询锁表,当前并没有表处于锁定中,查询进程,该进程一直处于等待中。
先用下面这个SQL查出处于WAIT状态的会话所持有的事务ID号
SELECT TRX_ID,SESS_ID,SQL_TEXT,CLNT_IP
FROM V$SESSIONS
WHERE STATE = 'WAIT'
然后利用查到的事务ID,查找V$TRXWAIT系统表是否存在记录
SELECT *
FROM V$TRXWAIT
WHERE ID = 前面查到的TRX_ID值
如果有记录,则记录的WAIT_FOR_ID就是引发阻塞的来源事务ID,可以利用这个事务ID反向找到对应会话及相关信息
视图 v$lock 的 LMODE有等于1的么