我再ORACLE10G中写了一个作业,每分钟都执行一次,现在我想停止这个作业,怎么停止啊,启动作业时用的是临时作业名,忘记了,能不能查询系统在运行的作业,查出来之后再停止该作业啊,这个作业说启动的过程加的数据很多,时间又那么短,现在数据库的归档日志老是挂掉,很急,那个大哥救救偶啊,非常感谢!!!

解决方案 »

  1.   

    select * from user_jobs;
    select * from dba_users;
      

  2.   

    可以select * from user_jobs;查到job的id;
    然后exec dbms_job.remove(21);
    commit;就删掉了
    如果用plsql工具更简单。直接图形化操作
      

  3.   

    1.通过pl/sql developer查到你的job,然后broken掉.在Job栏里可以看到所有的作业.2.通过命令:
    查出你的作业号: j.job
    select /*+ rule */r.sid, j.job, j.what, j.BROKEN
      from dba_jobs j, dba_jobs_running r
     where j.job = r.job;可以在上面查询结果里j.what字段值里,看看哪个是你要找的job,再执行下面语句:
    SQL> execute dbms_job.broken(上面的job值,true);
    SQL> commit;
      

  4.   

    运行JOB
    SQL> begin
    2 dbms_job.run(:job1);  --job1为作业号
    3 end;
    4 /删除JOB
    SQL> begin
    2 dbms_job.remove(:job1);
    3 end;
    4 / 
      

  5.   

    不要remove啊,broken就OK了,不然你还要用它就麻烦.
      

  6.   

    我刚刚试过了,但是只能看到一个作业,但这个作业不是那个加入大量数据的作业,有没有查询整个系统的语句可以查询的,我刚才用的是SYSTEM用户查询的,麻烦了哦。
      

  7.   

    那就用select * from dba_jobs; 查出所有JOB
      

  8.   

    我找到了,他的作业号是61,但是我去BROKEN的时候他说61在作业队列中不是一个作业,这是什么 原因啊 ?再请教下哦 。
      

  9.   

    把用户切换到job的用户去,再执行之即可.
      

  10.   

    一样的,都是说不是作业队列中的作业,我查询DBA_JOBS_RUNNING表,有时候能查出61,有时候又是未选定行,这个作业是SYSTEM下的作业,移除也移除不掉,我再找找方法吧,谢谢那,实在不行就把那个过程给删了,他估计就没得执行了。
      

  11.   

    system的那个作业不要管了。
    DBA_JOBS_RUNNING查出的你exec dbms_job.remove(61); 试下。不行的话直接删掉或改名那个存储过程也是个法子
      

  12.   

    终于弄好了,我把SYSTEM加了DBA的身份了,所以就不能删除作业了,ORACLE真BT哈,权利太大了也不行哈,非常感谢大家的解答,对我帮助很大。