如果说每次commit or rollback
是不会出现死锁的啊。
还是你没有规范的操作引起的吧

解决方案 »

  1.   

    是死锁还是正常的锁啊?查看init.ora文件中user_dump_dest所指的路径下最新的跟踪文件,看看是否有“ora-00600”这样的字符,如果有则说明发生了死锁。
      

  2.   

    死锁是不用人为干预的,Oracle自动处理下面把我常用的检查表锁的语句贴出来,实践检验还是特别好用的
      SELECT A.OWNER,   
             A.OBJECT_NAME,   
             B.XIDUSN,   
             B.XIDSLOT,   
             B.XIDSQN,   
             B.SESSION_ID,   
             B.ORACLE_USERNAME,   
             B.OS_USER_NAME,   
             B.PROCESS,   
             B.LOCKED_MODE,   
             C.MACHINE,   
             C.STATUS,   
             C.SERVER,   
             C.SID,   
             C.SERIAL#,   
             C.PROGRAM  
        FROM ALL_OBJECTS A,   
             V$LOCKED_OBJECT B,   
             SYS.GV_$SESSION C 
       WHERE ( A.OBJECT_ID = B.OBJECT_ID ) 
         AND (B.PROCESS = C.PROCESS )
       --  AND  
       ORDER BY 1,2     ;
      

  3.   

    根据大森林的方法得到sid和serial#
    然后
    alter system kill session 'sid,serial#'