我的表中有70多万条数据,我用Delete语句删除其中的50万条,结果半个多小时也没有执行完。
把Oracle服务重新启动以后,系统好像接着上次执行一样,硬盘灯一直常亮。有什么方法可以让
它停止执行了呢,现在Oracle占用了服务器大部分资源,别的什么都干不成了。

解决方案 »

  1.   

    DELETE 就是在那个表上加了个锁,
    然后清数据罢了。把这个锁查出来,然后杀掉就好。杀进程也可以。下面是查和杀的语句
     
    -- 查锁
    select object_name as 对象名称,s.sid,s.serial#,p.spid as 系统进程号
        from v$locked_object l , dba_objects o , v$session s , v$process p
        where l.object_id=o.object_id and l.session_id=s.sid and s.paddr=p.addr;
    --杀锁
    ALTER SYSTEM KILL SESSION ‘SID,SERIR#’; 
      

  2.   

    将你该进程kill掉:
    alter system kill session 'sid,serial#' ; 
      

  3.   

    如果要杀进程的话,用刚才的语句查出进程号,登陆到数据库服务器(以HP-UNIX为例)
    1.ps -ef |grep 进程号
    2 kill -9 进程号这个方法要慎用!
      

  4.   

    我用你的语句查了,一条结果也没有,但是服务器还是那个状态(硬盘灯常亮,Oracle占用大部分资源)
      

  5.   


    那就是数据已经删除完了,不过UNDO表空间还没有回收完毕而已。楼猪不必着急,睡一觉,明天早上,他应该自己就好了