今天同事在操作Oracle数据库表删数据时突然断网,再次连接的时候删数据就提示“record is locked by another user”,然后就百度找到了如下解决方案。
方案步骤:
1、查锁
select t2.username,t2.sid,t2.serial#,t2.logon_time from v$locked_object t1,v$session t2 where t1.session_id=t2.sid order by t2.logon_time;
2、解锁(KILL)
--alter system kill session 'sid,serial#';
alter system kill session '151,14678'; --151是sid,14678是serial
#运行以上命令后,就可以解决此问题。
操作记录:
1、数据库表被锁;
2、查锁
select t2.username,t2.sid,t2.serial#,t2.logon_time from v
l
o
c
k
e
d
o
b
j
e
c
t
t
1
,
v
locked_object t1,v
lockedobjectt1,vsession t2 where t1.session_id=t2.sid order by t2.logon_time;
结果:
1 BCSA 64 40449 2016/10/9 15:38:052 BCSA 64 40449 2016/10/9 15:38:053 BCSA 64 40449 2016/10/9 15:38:054 BCSA 64 40449 2016/10/9 15:38:05
3、解锁
alter system kill session ‘64,40449’;
如果在oracle 中干不掉的话,可以考虑在操作系统这一级中干掉它。ora-00031:session marked for kill 处理oracle中杀不掉的锁