你可能是你update的东西太多,要么是你有一些子查询也要处理。不过1000000也不要这么长时间,除非你的机子性能差,要么你贴出来看看好吗??

解决方案 »

  1.   

    以前我碰到过,不过我是修改的!我的数据有几百万!
    首先我要知道,你在执行这过程的时候,是不是还在进行其他任何对数据库数据进行操作?
    如果进行了其他操作,查看一下:select * from v$locked_object,是不是有锁!
    如果看了没有锁,那么你可以在提取游标的时候每次取100条语句看看,或者1000条,看看这样执行是不是可以!
    如果不可以我们继续讨论!
      

  2.   

    肯定没有锁,因为没有影响其它的操作。我刚才想到一个问题,是不是这个进程停止响应了,就是ORACLE挂起了它,可能他实际并没有做任何操作。我觉得如果是个死循环的话,肯定会影响其它的操作,或者性能下降对吧。是不是我可以将这个进程KILL掉,然后重新执行。游标大约是从100万条记录中提取1000条左右的,不会太多。
      

  3.   

    kill掉进程是可以的!
    我的想法和你的有点不一样,如果你在执行你的过程的时候,有一条记录是在操作的,那么就可能造成不能整个过程顺利的执行!但是,对其它的记录是不会有任何反应,也不会不能操作的!
    所以,你可以找个没有对数据库进行任何操作的时候去执行一下(包括程序的运行),你的过程!
    当然如果死循环,我觉得是不太可能的!简单的就是,你取游标的时候,先取10条来看看,很快,就可以知道,是不是存在这可能了!