写的存储过程计算比较大,跑一次要一个多小时,是用pl/sql执行的,每次都无法推出来,但是通过TOAD监控的已经运行结束,要的数据也都有了,请问是什么原因,多谢了!

解决方案 »

  1.   

    就是在pl/sql上,一直显示excuting,而且无法进行其他程序的编译和执行
      

  2.   

    没错,肯定是存在费数据库操作的 死循环或者锁,也就是这个进程可能没有Active,PL/SQL没有执行完,就是没有执行完。
      

  3.   

    用PLSQL的会话中,可以看到锁的信息,如果杀掉,直接就可以点击按钮杀掉该进程!锁的类型,可以参见文档
    表1 Oracle的TM锁类型 
    锁模式 锁描述 解释 SQL操作 
    0 none     
    1 NULL 空 Select 
    2 SS(Row-S) 行级共享锁,其他对象只能查询这些数据行 Select for update、Lock for update、Lock row share
     
    3 SX(Row-X) 行级排它锁,在提交前不允许做DML操作 Insert、Update、Delete、Lock row share
     
    4 S(Share) 共享锁 Create index、Lock share 
    5 SSX(S/Row-X) 共享行级排它锁 Lock share row exclusive 
    6 X(Exclusive) 排它锁 Alter table、Drop able、Drop index、Truncate table 、Lock exclusive
     
      

  4.   

    在里面弄点dbms_output.put_line , 输出点东西看看那~
    或则用断点调试几步