大家好,又见面了,我是你们的朋友全栈君。
oracle锁表情况时有发生,本文介绍了查看具体锁信息、强制删除锁、批量解锁等操作
一. 查看锁信息的方式
1. 锁表查询:
select count(*) from v$locked_object;
select * from v$locked_object;
2. 查询具体被锁的表信息:
select b.owner,b.object_name,a.session_id,a.locked_mode from v$locked_object a,dba_objects b where b.object_id = a.object_id;
3. 查询引起锁表的语句:
select l.session_id sid,
s.serial#,
l.locked_mode,
l.oracle_username,
s.user#,
l.os_user_name,
s.machine,
s.terminal,
a.sql_text,
a.action
from v$sqlarea a, v$session s, v$locked_object l
where l.session_id = s.sid
and s.prev_sql_addr = a.address
order by sid, s.serial#;
4.查看是哪个session引起的:
select b.username,b.sid,b.serial#,logon_time
from v$locked_object a,v$session b
where a.session_id = b.sid order by b.logon_time
二. 解锁方式
1. 直接杀掉对应进程
alter system kill session'1025,41';
其中1025为sid,41为serial#,均可以使用上面第四条的语句进行查询出来
2. 批量解锁的存储过程
declare cursor mycur is
select b.sid,b.serial#
from v$locked_object a,v$session b
where a.session_id = b.sid group by b.sid,b.serial#;
begin
for cur in mycur
loop
execute immediate ( 'alter system kill session '''||cur.sid || ','|| cur.SERIAL# ||''' ');
end loop;
end;
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/150147.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...