解决表死锁

本文介绍了如何使用SQL查询被锁定的对象及其相关信息,并提供了一个具体的解锁会话的命令示例。通过这些查询,可以有效地诊断和解决数据库中可能出现的锁定问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

--查看被锁的对象
SELECT * FROM V$LOCKED_OBJECT;
--查看被锁对象
select object_name as 对象名称, s.sid, s.serial#, p.spid as 系统进程号
from v$locked_object l, dba_objects o, v$session s, v$process p
where l.object_id = o.object_id
and l.session_id = s.sid
and s.paddr = p.addr;

SELECT /*+ RULE */
LS.OSUSER OS_USER_NAME,
LS.USERNAME USER_NAME,
DECODE(LS.TYPE,
'RW',
'ROW WAIT ENQUIRE LOCK',
'TM',
'DML ENQUIRE LOCK',
'TX',

'TRANSACTION ENQUIRE LOCK',
'UL',
'USER SUPPLIED LOCK') LOCK_TYPE,
O.OBJECT_NAME OBJECT,
DECODE(LS.LMODE,
1,
NULL,
2,
'ROW SHARE',
3,

'ROW EXCLUSIVE',
4,
'SHARE',
5,
'SHARE ROW EXCLUSIVE',
6,
'EXCLUSIVE',
NULL) LOCK_MODE,
O.OWNER,
LS.SID,
LS.SERIAL# SERIAL_NUM,
LS.ID1,
LS.ID2
FROM SYS.DBA_OBJECTS O,
(SELECT S.OSUSER,
S.USERNAME,
L.TYPE,
L.LMODE,
S.SID,
S.SERIAL#,
L.ID1,
L.ID2
FROM V$SESSION S,
V$LOCK L
WHERE S.SID = L.SID) LS
WHERE O.OBJECT_ID = LS.ID1
AND O.OWNER<> 'SYS'
ORDER BY O.OWNER, O.OBJECT_NAME;

--处理
alter system kill session '48,49704' immediate;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值