1.查看锁情况
select /*+ RULE */
ls.osuser os_user_name,
ls.username user_name,
decode(ls.type,
'RW',
'Row wait enqueue lock',
'TM',
'DML enqueue lock',
'TX',
'Transaction enqueue 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
--查询锁定状态的session
SELECT s.username,
l.OBJECT_ID,
l.SESSION_ID,
s.SERIAL#,
l.ORACLE_USERNAME,
l.OS_USER_NAME,
l.PROCESS
FROM V$LOCKED_OBJECT l, V$SESSION S
WHERE l.SESSION_ID = S.SID
--查询指定的某个session,通过status字段判断是否处于锁定状态
select t.STATUS from V$SESSION t where sid = 1029
2.杀掉进程 kill session
alter system kill session 'sid,serial_num';
select sid,
serial#,
username,
program,
status,
sql_id,
blocking_instance,
blocking_session
from v$session
where event = 'enq: TX - row lock contention'
order by blocking_session;
本文介绍如何使用SQL查询来检查Oracle数据库中的锁状态,包括锁定的会话信息及锁定对象详情。提供了用于查看锁定状态、特定会话状态及解除锁定会话的SQL语句。
4万+

被折叠的 条评论
为什么被折叠?



