zoukankan      html  css  js  c++  java
  • Oracle某条资料被锁如何解锁 (ScriptRunner,v$locked_object,SID和SERIAL#)

    最近在开发时出现一个状况,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

     

  • 相关阅读:
    文件路径总结
    git本地仓库关联远程仓库
    webpack-dev-server版本
    box-sizing重置
    事件委托优缺点和实现
    移动端经验总结(持续更新)
    点击其他区域关闭dialog
    css3图片变灰
    安装 ubuntu 后,使用 sed 更换国内源
    在virtualBox中打开vdi(转载)
  • 原文地址:https://www.cnblogs.com/fangjb/p/12825972.html
Copyright © 2011-2022 走看看