一、锁表
--锁表
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$locked_object l, all_objects o, v$session s
WHERE l.object_id = o.object_id
AND l.session_id = s.sid
ORDER BY sid, s.serial# ;
--kill session
ALTER system KILL session '780,54180';
ALTER system KILL session '1358,27418';二、锁存储过程
--锁存储过程
1:查V$DB_OBJECT_CACHE
SELECT * FROM V$DB_OBJECT_CACHE WHERE name='BB_NBGLJY' AND LOCKS!='0';
注意:BB_NBGLJY 为存储过程的名称。
发现 locks=2
2:按对象查出sid的值
select /*+ rule*/ SID from V$ACCESS WHERE object='BB_NBGLJY'; --972
注意:BB_NBGLJY 为存储过程的名称。
3:查sid,serial#
SELECT SID,SERIAL#,PADDR FROM V$SESSION WHERE SID='972';
4:alter system kill session '972,15527' immediate;
本文提供了一种解决Oracle数据库中锁定问题的方法,包括如何查询锁定的表和存储过程,以及如何杀死导致锁定的会话。具体步骤涉及使用SQL查询来定位锁定的源头,并通过系统命令解除锁定。
4万+

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



