查杀Oracle线程的方法

在一次使用PLSQL Developer 对数据库(Oracle)进行数据删除操作时,在执行完删除命令后,commit之前,PLSQL Developer 非法关闭。再次使用PLSQL Developer 登录,此时无法对前面操作过的表再次进行删除数据的操作了。报错:record is locked by another user。估计是前面非法关闭PLSQL Developer后,因为未做提交,数据库一直在等待提交,在此过程中,不能再对数据库中该张表进行删除操作了。询问公司的DBA,果然如此,遂请教解决方法。果然是DBA,上网google了两下,搞定(这老兄挺神,技术很强,但英文贼烂,经常记不住命令如何拼写,要用的时候直接google拼写方法)

1、先查找哪些线程正在运行中。注意要使用admin权限的用户登录数据库SQL PLUS,并且不要使用PLSQL Developer登录。

Select s.sid,s.serial#,p.spid THREADID, s.osuser, s.program
From v$process p, v$session s
Where p.addr = s.paddr

从得出的结果中查找你非法退出时登录PLSQL Developer的用户名对应的线程。

2、KILL所有你非法退出时登录PLSQL Developer的用户名对应的线程。
alter system kill session '28,12156'; 

还有一个方法是等待Oracle自动回滚,隔一定时间Oracle回执行一次回滚,恢复到上一次commit之前的状态。汗……自然这是最窝囊的办法了。谁知道它什么时候高兴了会回滚阿!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值