产生死锁的原因:两个事务同时访问被对方锁住的资源,造成双方都得不到自己想要的东西。
一、SqlServer
1、查询被锁表
SELECT request_session_id spid,OBJECT_NAME(resource_associated_entity_id) tableName
FROM sys.dm_tran_locks
WHERE resource_type='OBJECT'
2、哪个进程锁了哪张表
EXEC sp_who2 '54' //spid
3、清除锁
DECLARE @spid int
SET @spid = 54 --锁表进程
DECLARE @sql varchar(1000)
SET @sql='kill '+cast(@spid as varchar)
EXEC (@sql)
二、oracle
1、查询锁
SELECT b.username, b.sid, b.serial#, logon_time
FROM v$locked_object a, v$session b
WHERE a.session_id = b.sid
ORDER BY b.logon_time;
2、杀掉他
ALTER system kill session 'sid,serial#'; --替换掉sid 和serial#