–1. 如下语句 查询锁定的表:
SELECT l.session_id sid, s.serial#, l.locked_mode,l.oracle_username,l.os_user_name,s.machine, s.terminal, o.object_name, s.logon_time
FROM v
l
o
c
k
e
d
o
b
j
e
c
t
l
,
a
l
l
o
b
j
e
c
t
s
o
,
v
locked_object l, all_objects o, v
lockedobjectl,allobjectso,vsession s
WHERE l.object_id = o.object_id
AND l.session_id = s.sid
ORDER BY sid, s.serial# ;
–2.然后删除掉系统锁定的此记录,其中SID和serial#为上一条sql查询出的第一个和第二个字段
ALTER system KILL session ‘SID,serial#’;
–存储过程锁定解锁(Oracle存储过程编译卡死的解决方法)
解决方法如下:
1:查V$DB_OBJECT_CACHE
SELECT * FROM V$DB_OBJECT_CACHE WHERE name=‘CUX_OE_ORDER_RPT_PKG’ AND LOCKS!=‘0’;
注意:CUX_OE_ORDER_RPT_PKG 为存储过程的名称。
发现 locks=2
2:按对象查出sid的值
select /+ rule/ SID from V$ACCESS WHERE object=‘CUX_OE_ORDER_RPT_PKG’;
注意:CUX_OE_ORDER_RPT_PKG 为存储过程的名称。
3:查sid,serial#
SELECT SID,SERIAL#,PADDR FROM V$SESSION WHERE SID=‘刚才查到的SID’;
4:alter system kill session ‘sid值,serial#值’ immediate;