执行插入语句以后就不动了,也不报错,也不出现完成提示,就一直处于执行状态,之后别的操作都无法执行了,关了CMD再开也无法执行任何语句了,登陆都失败,除非重启电脑,就好了,这是什么原因啊,那位大哥帮帮偶啊,谢谢拉。

解决方案 »

  1.   

    看v$session_wait卡在哪了?
    或者是你的插入SQL有问题,死循环了?
      

  2.   

    你的表上存在唯一键。
    另外一个事务正在向这个表insert一条数据,
    你再向这个表insert数据,如果数据不会引发唯一键冲突的话,你可以插入成功,如果会引发唯一键冲突的话,你的insert就会被卡住,只能等待另外的事务会滚或者提交,你的回话才能有反映。
      

  3.   

    那如果是这样,我该怎么解决这个问题呢?不可能总是要重启来解决吧,还望orcledbalgtu大哥帮帮忙,我的表中有一个唯一键哦,但那是必须的,那这个问题我们解决呢,怎样设置才能不出现这种问题呢,麻烦了,还请帮帮忙。
      

  4.   

    该表数据是不是很大,执行插入的SQL语句是不是很长?
      

  5.   

    可能重复的insert操作,对有唯一主键的表可能造成锁表。
      

  6.   

    解决办法:
    1.如果想让你的session可以工作。 kill 阻塞你的进程:alter system  kill session 'sid,serial#' immediate;
      查找block session的方法: SELECT sid,serial# FROM v$session WHERE sid in(SELECT sid FROM v$lock s WHERE s.BLOCK=1);
      

  7.   

    SELECT sid,serial# FROM v$session WHERE sid in(SELECT sid FROM v$lock s WHERE s.BLOCK=1); 
    我进行查找的时候就吊死了,如果语句出错能一下反映过来,就是语句对了,进行执行的时候就卡死了,就一直卡住,只剩下光标在闪了,我再努力试试,谢谢大家帮忙了,还请再出出主意,谢谢拉。
      

  8.   

    我刚才又试了一下,把所有orcale的进程都杀掉,然后再重启服务,就都可以用了,不知道这是不是一种可以用的方法,还请指点下,谢谢拉。
      

  9.   

    最好别重启服务器,因为可能存在别的用户也在用。
    我感觉这种情况一般是表被锁定了,再执行插入的话就回卡住。
    通过命令行可以找到被卡主的会话,然后删掉。
    也可以通过oracle的控制台。将被lock的session 删掉最好把你的代码代码贴下看看