Oracle某条资料被锁如何解锁 (ScriptRunner,v$locked_object,SID和SERIAL#)
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Oracle某条资料被锁如何解锁 (ScriptRunner,v$locked_object,SID和SERIAL#),小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1079字,纯文字阅读大概需要2分钟。
内容图文
![Oracle某条资料被锁如何解锁 (ScriptRunner,v$locked_object,SID和SERIAL#)](/upload/InfoBanner/zyjiaocheng/874/bd68bc60c40445f7844c27f163d9e9e1.jpg)
最近在开发时出现一个状况,update和delete 某个table的某条记录时会卡死,像下图这样,ScriptRunner任务会一直在转,导致Oracle SQL Developer无法退出。
今天百度了一下,原来是该table的这一条数据被锁住了。下面步骤是找到的解决方法,先找到对应的session_id和serial#,然后杀掉进程。
(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)查看是哪个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;
(4)杀掉对应进程
执行命令:
alter system kill session'1025,41';
其中1025为sid,41为serial#.
如果查询不到v$locked_object,是因为没有权限。
以sys用户登录,执行如下授权语句:
grant select on SYS.V_$LOCKED_OBJECT TO dev;
此外,还需要注意的一个地方是,kill session语句中需要写上SID和SERIAL#
Alter system kill session 'SID,SERIAL#'
这是因为SID会被重用,而SERIAL#是递增的,不会重复。SID和SERIAL#组合才可以准确指定session
内容总结
以上是互联网集市为您收集整理的Oracle某条资料被锁如何解锁 (ScriptRunner,v$locked_object,SID和SERIAL#)全部内容,希望文章能够帮你解决Oracle某条资料被锁如何解锁 (ScriptRunner,v$locked_object,SID和SERIAL#)所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。