可能是你在调试程序的时候在别的地方把表个锁住了,比如说在PLSQL DELVELOPER中编辑表的数据就会把表给锁住,你在其他地方要更新表时就会一直处于等待状态。

解决方案 »

  1.   

    to guolibin(豆腐干) :
           我在程序调试的时候,的确是用  PLSQL DELVELOPER 把程序中的 SQL 取出来,运行。有时会和程序里面一样,执行SQL后,一直运行,不返回结果,有时又很快。 你说的情况应该也会有,但我把服务器重起后,从一台新机器 用 IE 访问 我的系统,还是会有上面说的情况。 即便是这样,有没有好的解决方法呢?
      

  2.   

    我在系统中专门为 系统创建了 帐号  EPSASADMIN ,给了 connect,resouce 权限。结果在  PLSQL DELVELOPER 中导入表后,在每次执行SQL前,都会弹出一个提示,说我无法访问  v$ 开头的一些视图表,后经查阅是几个 数据库的动态性能视图表。  由于小弟使用oralce才1个星期,所以不知道怎么给 EPSASADMIN 这个帐号 加上 数据库的动态性能视图表 的访问权限。 
          这个和我上面说的情况有关系吗?       怎么才能给这个 EPSASADMIN 用户加上访问 数据库的动态性能视图表的权限呢?       我在网上其它地方也查了一下,我想也应该和 (豆腐干) 兄说的类似,表被锁了。那么到底应该怎么处理呀? 去程序中优化我的SQL? 还是什么别的办法?       望各位帮帮我呀! (分不是问题!)
      

  3.   

    1、访问 数据库的动态性能视图表需要有DBA权限,最简单的方法是把DBA权限赋予用户,如下
    C:> sqlplus /nolog
    SQL> CONN / AS SYSDBA     --如果不在服务器上应该为 CONN SYS/[SYSPWD]@[SERVICENAME] AS SYSDBA
    SQL> GRANT DBA TO [USER_NAME];但一般情况下不用给一般用户DBA权利,一般用户也不需要访问动态性能视图表
    2、一般情况下表是不会长时间被锁的,如果是因为PLSQL DEVELOPER原因把表锁了,只需要手动解锁就可以了,不用特别处理。
      

  4.   

    guolibin(豆腐干) 兄:
         现在在系统中多数执行 比较复杂的删除语句就会锁表,程序没有反映。哎真是郁闷哟!
      

  5.   

    我加了 dba 权限还是一样!我的联接串:
    <add key="OleDBConnectionString" value="Provider=OraOLEDB.Oracle;Data Source=devdb.Server;User Id=EpsasAdmin;Password=EpsasAdmin;"/> 一条肯定都会锁的SQL语句: DELETE FROM satbvaluetask
    WHERE NOT nid IN (SELECT satbvaluetask.nid
    FROM satbvaluetask, satbgradelib, satbgradestandard
    WHERE satbvaluetask.strprjnum = satbgradelib.strprjnum
    AND satbgradelib.strguid = satbgradestandard.strgradeguid
    AND satbvaluetask.strserialnum = 
    satbgradestandard.strserialnum
    AND satbgradestandard.nitemtype = 1)执行上述语句 satbvaluetask 一定被锁(任何情况,oralce刚启动一个用户也是),程序就没有返回值。程序锁死小弟把 联接串 与 SQL 语句都贴出来, 看是不是这里面的问题!
      

  6.   

    上面 delete 的语句有问题,已修正。现在最大的问题是 在 insert into 语句中 如果 字符字段的 内容 超长,也会锁死,没有反回值,没有反映,请问各位大侠是怎么处理的呀?