一表可以select,insert. 但不能update或delete 这个表是否被锁定?
为什么会出现这种情况.程序上有什么要注意的吗?

解决方案 »

  1.   

    一 当前用户 有 UPDATE DELETE 的权限吗?
    二 是否有其他的 程序同时在修改这些表 
    其他的就不知道了
      

  2.   

    有权限。本身程序就是对这个表进行insert,然后更新,最后删除.
    程序跑个把月就锁住了.只能insert.和select 不能update或delete.
      

  3.   

    有没有被锁查查 v$locked_object
      

  4.   

    查询当前用户的权限select * from role_tab_privs ; 
      

  5.   


    select * from user_tab_privs ;
      

  6.   

    是太慢,还是根本不行?若太慢应该是没索引吧?
    如果是不行,应该真的被锁了,看看程式事务是不是没提交?如执行了execute immediate 之类的。
      

  7.   

    还是要核查一下权限问题
    select * from user_tab_privs ;    用户对象权限
    select * from user_sys_privs ;    系统对像权限
      

  8.   

    查看锁表进程SQL语句1: 
    select sess.sid, 
        sess.serial#, 
        lo.oracle_username, 
        lo.os_user_name, 
        ao.object_name, 
        lo.locked_mode 
        from v$locked_object lo, 
        dba_objects ao, 
        v$session sess 
    where ao.object_id = lo.object_id and lo.session_id = sess.sid; 查看锁表进程SQL语句2: 
    select * from v$session t1, v$locked_object t2 where t1.sid = t2.SESSION_ID; 杀掉锁表进程: 
    如有记录则表示有lock,记录下SID和serial# ,将记录的ID替换下面的738,1429,即可解除LOCK 
    alter system kill session '738,1429'; 挺好使 别的我也不多说了