我现在有一个用jsp和servlet开发的web系统,通过连接池连接到一个oracle9数据库,
但在一个罕见的不明原因情况下,一个表出现不能完成任何写操作的情况,即从任何客户端执行任何写操作,包括insert和 update,结果就是无限等待。请问这是什么原因,如果是死锁,因为不能insert,应该是表锁定,但根据我们的设计,应该没有
表锁定发生。

解决方案 »

  1.   

    你的前台是否应用了事务,如果事务没有提交或者提交失败,导致了表被锁住了,你可以debug看看。
    另外,oracle可以查询锁的情况:
    以DBA身份查询表锁:
    select object_id,session_id,locked_mode from v$locked_object;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;
    杀掉死锁:
    alter system kill session 'sid,serial#'