有关"SELECT FOR UPDATE"的一些问题

     相关问题:用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,之类的,我们也不可能去一直研究他们,不过我们可以积累的研究他们,慢慢的学习过程当中,就会了解更多知识。

你可能感兴趣的:(oracle,数据库,session,object,kill,System)