今天一个同事在编译一个procedure,刚开始执行,我不知道,就在我的电脑这边excute这个procedure,造成被锁。然后kill掉这个进程,重新execute,一直不动;重启oracle,然后再execute,还是不动。将该表删除了,重建,然后再execute,仍旧不动。
我想应该是之前执行的数据没有commit,造成再次执行时,只能等待着。请问该如何解决?
谢谢!

解决方案 »

  1.   

    检查一下dba_ddl_locks表里有没有记录。sp编译的时候,会有ddl锁的
      

  2.   

    dba_ddl_locks中记录如下,不知什么意思?
    23 154 HMISDATA HMISDATA 18 Null None
    39 146 HMISDATA HMISDATA 18 Null None
    37 147 HMISDATA HMISDATA 18 Null None
    43 140 HMISDATA HMISDATA 18 Null None
    21 157 HMISDATA HMISDATA 18 Null None
    73 141 HMISDATA HMISDATA 18 Null None
    29 148 HMISDATA HMISDATA 18 Null None
    35 159 HMISDATA HMISDATA 18 Null None
    25 152 HMISDATA HMISDATA 18 Null None
    58 139 HMISDATA HMISDATA 18 Null None
    27 149 HMISDATA HMISDATA 18 Null None
    33 151 HMISDATA HMISDATA 18 Null None
    41 145 HMISDATA HMISDATA 18 Null None
    31 153 HMISDATA HMISDATA 18 Null None
      

  3.   

    请问dba_ddl_locks中发现被锁的记录后,该怎么处理呢?