相关问题:用PL SQL执行for update命令后死锁了解锁
删除掉v$locked_object当中的临时锁定
for update 解锁
首先我的问题,是,今天在PL/SQL当中用了SELECT FOR UPDATE语句,没有像做学问一样,找到问题,然后去看是谁的电脑锁住了,然后仔细的检查一次,没有那样,而且也不允许我那样子做。只有自己删掉锁session,然后继续工作。
所谓只要自己积极主动的去解决问题,就没有多大的问题,当然,不是那种相当尖锐的难题,我只是指当下遇到的一些问题,工作中,每个行业遇到自己行业当中的难题,其实在所难免,不过解决起来,他们自有自己的一套,比如今天遇到的这个oracle的锁问题。
如果是为了解决这个问题,自己网上一搜索,一大把,而且相当客观和直接的解决了我的问题。
- --查看表对象的对象ID
- select object_id from user_objects where object_name=upper('m2m_menu_node_cfg_tbl');
- --查看锁定情况
- select sid from v$lock where id1=74284;
- --查看根据SID获得当前session信息
- select SID,STATUS,SERIAL# from v$session where sid in(108,151);
- --杀掉进程,记住这里的108,62987,是一条数据的SID和SERIAL#,不过没关系,试试也知道了,情况就那几种,呵呵
- alter system kill session '108,62987';
- --
- --命令行下,或过程execute immediate 'alter system kill session '||''''||108||','||151||'''';
- ---------用上面的语句得到当前的锁定情况,用下面一句也行
- --得到当前锁定情况
- select object_name,machine,s.sid,s.serial#
- from v$locked_object l,dba_objects o ,v$session s
- where l.object_id = o.object_id and l.session_id=s.sid;
- --查看当前再用的数据库的锁定情况
- select * from v$locked_object
- --杀掉进程,记住这里的108,62987,
- alter system kill session '108,62987';
以上介绍了两种方法,当然都可以解决问题,关于锁的问题和有哪些锁,我想,对于我只能够了解到那么多,在工作之余,能够学习得更深入,围绕自己的开发语言和自己说能用到的其他内容,比如C,不可能不接触到数据吧,只要有关于数据库,当然,不管是MYSQL,oracle,DB2,之类的,我们也不可能去一直研究他们,不过我们可以积累的研究他们,慢慢的学习过程当中,就会了解更多知识。
转自:http://blog.csdn.net/sebatinsky/article/details/5382229