+ -
当前位置:首页 → 问答吧 → oracle 停止 job

oracle 停止 job

时间:2011-11-08

来源:互联网

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 
谢谢

作者: zpworld   发布时间: 2011-11-08

SQL code
begin
dbms_job.remove(job;); --这个 应该怎么写呢
end;
/

这样子删除不了嘛?

作者: cosio   发布时间: 2011-11-08

引用 1 楼 cosio 的回复:
SQL code

begin
dbms_job.remove(job;); --这个 应该怎么写呢
end;
/

这样子删除不了嘛?

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

作者: zpworld   发布时间: 2011-11-08

SQL code

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

作者: LuiseRADL   发布时间: 2011-11-08

引用 3 楼 luiseradl 的回复:
SQL code


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


报错 出现符号“commit”

作者: zpworld   发布时间: 2011-11-08

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


--2.直接pl/sql developer 中找到jobs左边的+号,点击展开,选择该JOB,直接删除,就可以了!如果不清--楚是哪个,可以点击右键查看.在确认是否删除,在删除之前,建议保存一下SQL的脚本!

作者: cosio   发布时间: 2011-11-08

引用 5 楼 cosio 的回复:
SQL code

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


--2.直接pl/sql developer 中找到jobs左边的+号,点击展开,选择该JOB,直接删除,就可以了!如果不清--楚是哪个,可以点击右键查看.在确认是否删除,在删除之前,建议保存一下SQL……


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

作者: zpworld   发布时间: 2011-11-08

SQL code
pl/sql developer 这是一个第三方的工具,会有一个菜单栏.不知道你有没有看到,不是oracle自带的 pl/sql

如果没有,你就试一下,第一种办法的操作吧!

作者: cosio   发布时间: 2011-11-08

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

作者: cosio   发布时间: 2011-11-08

引用 8 楼 cosio 的回复:
SQL code


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


sql 窗口执行的?

作者: zpworld   发布时间: 2011-11-08

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

作者: cosio   发布时间: 2011-11-08

引用 10 楼 cosio 的回复:
是的,这个可以直接在PL/SQL中执行!


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

作者: zpworld   发布时间: 2011-11-08

加一句,variable job number;

作者: cosio   发布时间: 2011-11-08

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

作者: cosio   发布时间: 2011-11-08

引用 12 楼 cosio 的回复:
加一句,variable job number;

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 还是不行报错 帮我写个谢谢

作者: zpworld   发布时间: 2011-11-08

SQL code
/* 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;

作者: tx2730   发布时间: 2011-11-08

倒,还是报什么错?

作者: cosio   发布时间: 2011-11-08

引用 15 楼 tx2730 的回复:
SQL code

/* 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_……


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

作者: zpworld   发布时间: 2011-11-08

引用 16 楼 cosio 的回复:
倒,还是报什么错?


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

作者: zpworld   发布时间: 2011-11-08

引用 17 楼 zpworld 的回复:
引用 15 楼 tx2730 的回复:
SQL code

/* 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_………


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 就是有的而有好几行谢谢 

作者: zpworld   发布时间: 2011-11-08

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

作者: cosio   发布时间: 2011-11-08

引用 20 楼 cosio 的回复:
你只有先建好JOB,才可以remove,你现在是没有建好,所以remove肯定不行!


job 一直在运行 中

作者: zpworld   发布时间: 2011-11-08

SQL code
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;

作者: tx2730   发布时间: 2011-11-08

引用 22 楼 tx2730 的回复:
SQL code

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;
D……

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

作者: zpworld   发布时间: 2011-11-08

我多加了个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;

作者: tx2730   发布时间: 2011-11-08