select '-------------------------------------------------------------------------------',
'OS/ORA user: '||ls.osuser||'/'||ls.username,
'Obj_name: '||o.owner||'.'||o.object_name,
'Sub_name: '||o.subobject_name,
'Obj_id: '||o.object_id,
'ID1 is '||t.ID1_TAG||': '||ls.ID1 ID1,
'ID2 is '||t.ID2_TAG||': '||ls.ID2 ID2,
'Lock_Type: '||ls.type||'---'||t.description,
'Lock_Mode: '||decode(ls.lmode,
0,'none',
1,'Null---select',
2,'RowShare---SelectForUpdate/LockForUpdate/LockRowShare',
3,'RowExclusive---DML/LockRowShare',
4,'Share---CreateIndex/LockShare',
5,'ShareRowExclusive---LockShareRowExclusive',
6,'Exclusive---AlterTab/DropTab/DropInd/TruncTab/LockExclusive',
null),
'Lock_time: '||ls.ctime,
'Blocker: '||decode(ls.BLOCK,0,'NULL',1,'DeadLock'),
'Kill_Session_SQL: alter system kill session '''||ls.sid||','||ls.serial#||''';',
'Kill_OS_Process_Shell: kill -9 '||p.SPID,
'-------------------------------------------------------------------------------'
from sys.dba_objects o,
(select s.osuser,s.username,l.type,l.lmode,
s.sid,s.serial#,l.id1,l.id2,s.paddr,l.ctime,l.BLOCK
from v$session s, v$lock l
where s.sid = l.sid) ls,
v$lock_type t,v$process p
where o.object_id(+)=ls.id1
-- and o.owner in ('XXX', 'XXXX')
-- and o.object_name='XXXXX'
and ls.type=t.type
and ls.PADDR=p.ADDR
-- and ls.ctime>60
order by o.owner, o.object_name;
-- 查询用户产生的锁的相关信息:
-- 系统/库 用户名,如果库用户名为空,则代表sys
-- 对象名,对象名为 . 则代表sys,where条件含外链接,导致owner有可能为空
-- 子对象名,一般为空
-- 对象ID
-- v$lock中的ID1和ID2,ID1的含义并不一定是对象ID,因此对象ID有可能为空
-- 锁类型及其描述
-- 锁模式及其产生的原因
-- 锁产生的时间
-- 是否发生死锁
-- 杀死会话的SQL语句
-- 杀死进程的SHELL语句
Oracle 查询锁和对应的对象信息 以及强制释放句
最新推荐文章于 2024-04-24 10:03:48 发布