• plsql被另一个用户锁住的解决办法


    今天很不幸,可能由于自己的疏忽,在用plsql的时候用select * from 表名 for update 去修改数据,之后由于接着专心写代码修bug等又做其他事情了,导致可能没有关闭锁,然后关闭了plsql,之后再查修改的数据准备提交的时候,就报错了,提示【记录被另一个用户锁住】,所以这里提醒一下大家,最好不要用for update去修改数据,要用 select A.*,A.rowid from 表名 去修改数据,这样可以避免被锁。

    如何小编也是求助了网上的大神们的解决办法,希望能够帮助到大家吧

    1、查看数据库锁,诊断锁的来源及类型:

    select object_id,session_id,locked_mode from v$locked_object;

    或者用以下命令: 

    select b.owner,b.object_name,l.session_id,l.locked_mode from v$locked_object l, dba_objects b where b.object_id=l.object_id 

    2、找出数据库的serial#,以备杀死:

    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; 

    3、杀死该session:   

    alter system kill session 'sid,serial#'


    以上基本就可以实现解锁,但是在小编的操作过程中,好像多用了几次 select A.*,A.rowid from 表名 

    去操作 的时候,就自动解锁了,当然具体场景,大家可以多尝试一下,说不定会有另外的收获呢。

    参考文章:

    https://blog.csdn.net/jarniyy/article/details/51133214

    感谢原作者的分享,让技术人能够更快的解决问题

  • 相关阅读:
    bzoj2888: 资源运输
    [ SDOI 2009 ] HH的项链 & [ HEOI 2012 ] 采花
    [ POI 2017 ] Podzielno
    [ HAOI 2011 ] Problem A
    [ SDOI 2011 ] 打地鼠
    [ SCOI 2007 ] Perm
    [ POI 2011 ] Dynamite
    [ BZOJ 3038 & 3211 / SPOJ GSS4 ] 上帝造题七分钟2 / 花神游历各国
    [ BZOJ 3445 ] Roadblock
    [ ZJOI 2006 ] Mahjong
  • 原文地址:https://www.cnblogs.com/jalenFish/p/14099037.html
Copyright © 2020-2023  润新知