declare job number; 
begin
  sys.dbms_job.submit(job => job,
  what => 'begin ETL.run_all(); end;'
  next_date => to_date('08-11-2011 13:15:00', 'dd-mm-yyyy hh24:mi:ss'),
  interval => 'SYSDATE+1');
  commit;
end;
/job 停不了  是了很多办法了select * from user_jobs;28 71 SCOTT SCOTT SCOTT 2011-11-8 16:04:59 16:04:59
29 72 SCOTT SCOTT SCOTT 2011-11-8 16:04:59 16:04:59
40 83 SCOTT SCOTT SCOTT 2011-11-8 16:04:59 16:04:59
为什么好几条都是 同一时间发生的呢 有5,6条把都是一样的同一时间
begin
dbms_job.remove(job;); --这个 应该怎么写呢
end;我想删掉 job要不一直job 
谢谢

解决方案 »

  1.   

    begin
    dbms_job.remove(job;); --这个 应该怎么写呢
    end;
    /这样子删除不了嘛?
      

  2.   

    删不了  报错了(job;);  应该怎么写呢
      

  3.   


    BEGIN
        DBMS_JOB.REMOVE(&job); -- job为作业的编号
    END;
    COMMIT; -- 别忘了提交
      

  4.   


    报错 出现符号“commit”
      

  5.   

    BEGIN
        DBMS_JOB.REMOVE(&job); -- job为作业的编号
        COMMIT; -- 别忘了提交
    END;
    /
    --2.直接pl/sql developer 中找到jobs左边的+号,点击展开,选择该JOB,直接删除,就可以了!如果不清--楚是哪个,可以点击右键查看.在确认是否删除,在删除之前,建议保存一下SQL的脚本!
      

  6.   


    select * from dba_jobs
    查询的 没有+ 号  没有删除选项 怎么办呢
      

  7.   

    pl/sql developer 这是一个第三方的工具,会有一个菜单栏.不知道你有没有看到,不是oracle自带的 pl/sql如果没有,你就试一下,第一种办法的操作吧!
      

  8.   

     
      1  begin
      2  sys.dbms_job.remove(:jobno);   --jobno,就是你刚开始定义那个job的名称.
      3  commit;
      4  end;
      5  /
    --本机测试PASS!!!
      

  9.   

    是的,这个可以直接在PL/SQL中执行!
      

  10.   


    begin
    sys.dbms_job.remove(:job);
    commit;
    end;
     
    --ORA-01008: 并非所有变量都已绑定
      

  11.   

    加一句,variable job number;
      

  12.   

    PL/SQL Developer  这个工具你一定要下载一下!
      

  13.   

    declare job number; 
    begin
      sys.dbms_job.submit(job => job,
      what => 'begin ETL.run_all(); end;',--;必须写
      next_date => to_date('08-11-2011 13:15:00', 'dd-mm-yyyy hh24:mi:ss'),
      interval => 'SYSDATE+1');
      commit;
    end;
    / 我的job  还是不行报错 帮我写个谢谢
      

  14.   

    /* Formatted on 2011/11/08 17:08 (Formatter Plus v4.8.8) */
    DECLARE
       v_job   NUMBER;
    BEGIN
       SELECT job
         INTO v_job
         FROM user_jobs
        WHERE UPPER (what) LIKE '%ETL.RUN_ALL%' AND ROWNUM = 1;   DBMS_JOB.remove (v_job);
       COMMIT;
       DBMS_OUTPUT.put_line ('成功删除Job' || v_job);
    EXCEPTION
       WHEN NO_DATA_FOUND
       THEN
          DBMS_OUTPUT.put_line ('没有要删除的Job');
    END;
      

  15.   


    谢谢 
    begin ETL.run_all(); end;
    what 列 begin ETL.run_all(); end;有好多行是为什么呢 (begin ETL.run_all(); end;也是个个job 名字)
      

  16.   


    declare job number;
    begin
    sys.dbms_job.remove(:job);
    commit;
    end;
    并非所有变量都已经绑定
      

  17.   


    DECLARE
       v_job   NUMBER;
    BEGIN
       SELECT job
         INTO v_job
         FROM user_jobs
        WHERE UPPER (what) LIKE '%begin ETL.run_all(); end;%' AND ROWNUM = 1;   DBMS_JOB.remove (v_job);
       COMMIT;
       DBMS_OUTPUT.put_line ('成功删除Job' || v_job);
    EXCEPTION
       WHEN NO_DATA_FOUND
       THEN
          DBMS_OUTPUT.put_line ('没有要删除的Job');
    END;按照那个改的 删除 begin ETL.run_all(); end 为什么 提示没有呢 select 就是有的而有好几行谢谢 
      

  18.   

    你只有先建好JOB,才可以remove,你现在是没有建好,所以remove肯定不行!
      

  19.   


    job 一直在运行 中
      

  20.   

    DECLARE
      v_job NUMBER;
    BEGIN
      SELECT job
      INTO v_job
      FROM user_jobs
      WHERE what LIKE '%begin ETL.run_all(); end;%' AND ROWNUM = 1;  DBMS_JOB.remove (v_job);
      COMMIT;
      DBMS_OUTPUT.put_line ('成功删除Job:' || v_job);
    EXCEPTION
      WHEN NO_DATA_FOUND
      THEN
      DBMS_OUTPUT.put_line ('没有要删除的Job');
    END;
      

  21.   

    问下你改的那呢 我改就不行'%begin ETL.run_all(); end;%
      

  22.   

    我多加了个upper函数在what列,去掉就是你要的了,这样可以删你想删的job吗?
    DECLARE
      v_job NUMBER;
    BEGIN
      SELECT job
      INTO v_job
      FROM user_jobs
      WHERE UPPER (what) LIKE '%begin ETL.run_all(); end;%' AND ROWNUM = 1;  DBMS_JOB.remove (v_job);
      COMMIT;
      DBMS_OUTPUT.put_line ('成功删除Job' || v_job);
    EXCEPTION
      WHEN NO_DATA_FOUND
      THEN
      DBMS_OUTPUT.put_line ('没有要删除的Job');
    END;
      

  23.   


    select *  from user_jobs  看到 what列有很多begin ETL.run_all(); end;  执行了上面删除不了  failure 列 有的是0有的是1有的是空 为什么会有很多的begin ETL.run_all(); end;谢谢
      

  24.   

    job的管理其实很简单,主要看两个地方Dba_Jobs和Dba_Jobs_Running
    Dba_Jobs是查看所有job的信息,what列可以知道这个Job是做什么的.
    Dba_Jobs_Running查看正在运行的Job信息,正在运行的Job是删除不了的.
    要先停掉(就是杀掉session)或等其执行完.
    DECLARE
       v_job   NUMBER;
    BEGIN
       FOR c_job IN (SELECT job
                       FROM user_jobs
                      WHERE what LIKE '%begin ETL.run_all(); end;%'
                        AND job NOT IN (SELECT job
                                          FROM dba_jobs_running))
       LOOP
          v_job := c_job.job;
          DBMS_JOB.remove (v_job);
          COMMIT;
          DBMS_OUTPUT.put_line ('成功删除Job:' || v_job);
       END LOOP;
    EXCEPTION
       WHEN OTHERS
       THEN
          DBMS_OUTPUT.put_line ('删除Job:' || v_job || ' 失败!');
    END;
      

  25.   


    Dba_Jobs_Running 是空的
    执行了你上面那个 程序 输出窗口没有任何显示 sys 执行的也没报错
      

  26.   

    你把这句SQL的结果贴一下看看
    SELECT job FROM user_jobs WHERE what LIKE '%begin ETL.run_all(); end;%'
      

  27.   

        JOB
    1 51
    2 52
    3 53
    4 54
    5 55
    6 56
    7 57
    8 58
    9 59
    10 60
    11 61
    12 62
      

  28.   

    你用下面的语句试试呢,如果报错的话把错误信息贴出来看看吧
    BEGIN
    dbms_job.remove( 51);
    dbms_job.remove(52);
    dbms_job.remove(53);
    dbms_job.remove(54);
    dbms_job.remove(55);
    dbms_job.remove(56);
    dbms_job.remove(57);
    dbms_job.remove(58);
    dbms_job.remove(59);
    dbms_job.remove(60);
    dbms_job.remove(61);
    dbms_job.remove(62);
    END;
      

  29.   


    为什么 会出现 那么多一个 what 名字的 job 在 user_jobs 里面呢