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

  相关问题:用PL SQL执行for update命令后死锁了解锁   
               删除掉v$locked_object当中的临时锁定
           for update 解锁

     首先我的问题,是,今天在PL/SQL当中用了SELECT FOR UPDATE语句,没有像做学问一样,找到问题,然后去看是谁的电脑锁住了,然后仔细的检查一次,没有那样,而且也不允许我那样子做。只有自己删掉锁session,然后继续工作。

     所谓只要自己积极主动的去解决问题,就没有多大的问题,当然,不是那种相当尖锐的难题,我只是指当下遇到的一些问题,工作中,每个行业遇到自己行业当中的难题,其实在所难免,不过解决起来,他们自有自己的一套,比如今天遇到的这个oracle的锁问题。

如果是为了解决这个问题,自己网上一搜索,一大把,而且相当客观和直接的解决了我的问题。

  1. --查看表对象的对象ID  
  2. select object_id from user_objects where object_name=upper('m2m_menu_node_cfg_tbl');  
  3. --查看锁定情况  
  4. select sid from v$lock where id1=74284;  
  5. --查看根据SID获得当前session信息  
  6. select SID,STATUS,SERIAL# from v$session where sid in(108,151);  
  7. --杀掉进程,记住这里的10862987,是一条数据的SID和SERIAL#,不过没关系,试试也知道了,情况就那几种,呵呵  
  8. alter system kill session '108,62987';  
  9. --  
  10. --命令行下,或过程execute immediate 'alter system kill session '||''''||108||','||151||'''';  
  11. ---------用上面的语句得到当前的锁定情况,用下面一句也行  
  12. --得到当前锁定情况  
  13. select object_name,machine,s.sid,s.serial#  
  14. from v$locked_object l,dba_objects o ,v$session s  
  15. where l.object_id = o.object_id and l.session_id=s.sid;  
  16. --查看当前再用的数据库的锁定情况  
  17. select * from v$locked_object  
  18. --杀掉进程,记住这里的10862987,  
  19. alter system kill session '108,62987';   


    以上介绍了两种方法,当然都可以解决问题,关于锁的问题和有哪些锁,我想,对于我只能够了解到那么多,在工作之余,能够学习得更深入,围绕自己的开发语言和自己说能用到的其他内容,比如C,不可能不接触到数据吧,只要有关于数据库,当然,不管是MYSQL,oracle,DB2,之类的,我们也不可能去一直研究他们,不过我们可以积累的研究他们,慢慢的学习过程当中,就会了解更多知识。


转自:http://blog.csdn.net/sebatinsky/article/details/5382229

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值