锁的问题,能不能有什么根本方法解决它(不用kill)!在线等待!! kill有什么用?你的业务逻辑已经受到影响。建议扫扫程序的大尾巴。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 你必须找出死锁的源头,好好把程序check一下,否则,怎么让用户用。 在程序里显式用 commit,或者 rollback 结束事务,及时释放锁定资源。或者语句后使用 nowait 项,不进行锁定等待。你所说的死锁,可能不是 oracle 概念上的死锁!!因为我记得 oracle 的 SMON(或者是其他,记不清了)是可以自动监视到死锁,并 Kill or rollback(也记不清了,总之就是处理了)。据我猜测,你所说的死锁,很有可能只是锁等待,如果这样,所以上面的提议还是有一定帮助的。 提高你的编程能力,语句中尽量使用...where id=12345的有值方式。执行语句前,仔细想一下此语句是否为死循环语句。工作时间,尽量少作调试工作。 不知道,你说的锁是在哪里看到的,哪张表?(V$_LOCK)还是表被锁了。上面几位都是高手,说得很有道理! 判断是哪个statement锁定的表可能仅仅是一个sql操作而导致这么多的死锁现象可以看看V$lock V$sqltext V$session 找出死锁的语句 SELECT bb.sid , id1, id2, lmode, request, aa.type ,MACHINE,sql_textFROM V$LOCK aa,V$session bb, v$sql ccwhere aa.sid = bb.sid and bb.SQL_ADDRESS =cc.address and bb.sql_hash_value =cc.hash_valueORDER BY id1,request/ 通过V$SESSION,V$SESSION_EVENT,V$SESSION_WAIT视图得到等待最多的事件是什么。然后通过V$SQLTEXT查出最根本的sql语句是什么。针对该sql进行优化,就有目标了。 你看看你把oracle的管理机制设为几级啊,最高的两级是连select都要锁表的,是不是你把等级设得太高,导致并发事务处理上的缺陷。锁是没法改的,那是oracle内部自动设定的。死锁有两个原因,并发事务处理的等级和应用程序,好好找找吧,看看是在什么情况下发生的死锁,找到原因就好办了 oracle登录问题 一道sql面试题,求解 oracle 内部错误ora-00600: 如何将查询结果导出到文本文件? 执行查询语句时出现违反协议的错误 这样的要求能不能用一条sql语句完成? oracle共享内存问提 一个oracle错误!! 关于dblinks的几个问题 请问在Win2000 pro的操作系统上可以安装Oracle9i么? 浅谈视图(Views) 如何将Oracle 9i的表空间改为字典管理?(在线等)
或者语句后使用 nowait 项,不进行锁定等待。你所说的死锁,可能不是 oracle 概念上的死锁!!因为我记得 oracle 的 SMON(或者是其他,记不清了)是可以自动监视到死锁,并 Kill or rollback(也记不清了,总之就是处理了)。
据我猜测,你所说的死锁,很有可能只是锁等待,如果这样,所以上面的提议还是有一定帮助的。
执行语句前,仔细想一下此语句是否为死循环语句。
工作时间,尽量少作调试工作。
还是表被锁了。
上面几位都是高手,说得很有道理!
可能仅仅是一个sql操作而导致这么多的死锁现象
可以看看V$lock V$sqltext V$session 找出死锁的语句
FROM V$LOCK aa,V$session bb, v$sql cc
where aa.sid = bb.sid and bb.SQL_ADDRESS =cc.address and bb.sql_hash_value =cc.hash_value
ORDER BY id1,request
/
然后通过V$SQLTEXT查出最根本的sql语句是什么。
针对该sql进行优化,就有目标了。