Oracle Express 11g中每天运行的Oracle作业

时间:2013-09-23 15:19:39

标签: oracle stored-procedures oracle11g jobs

![在此处输入图片说明] [1]

我刚刚使用新版本的数据库进行了更新。我之前使用的是Oracle数据库versioyon 10.现在我安装了Oracle 11g Express版本。

我在DBMS_jobs上有三个工作。

我将其编程为每天在特定时间运行它们。存储过程中每天凌晨01:00都定期运行。

begin
  sys.dbms_job.submit(job => :job,
  what => 'BEGIN CALL_MY_SP; END;',
  next_date => to_date('24-09-2013 01:00:00', 'dd-mm-yyyy hh24:mi:ss'),
   interval => 'TRUNC(SYSDATE + 1) + 1/24');
  commit;
end;

虽然同样的工作要运行新的Oracle数据库。但这项工作是手动执行的。

我如何每天定期自动运行?但如果我没有怎么办呢!

http://i.stack.imgur.com/rePVq.png

你的工作

http://l1309.hizliresim.com/1f/s/sz6pg.png

1 个答案:

答案 0 :(得分:2)

要手动运行,请尝试:

exec dbms_scheduler.run_job('MY_JOB',false);

要手动停止,请使用:

exec dbms_scheduler.stop_job('MY_JOB',false);

如果您的问题是如何在Oracle中调度作业,那么这是一个很大的主题(参见Documentation),但一个简单的例子是:

BEGIN

  dbms_scheduler.create_job(
    job_name=>'JOB_TEST2',
    job_type=>'PLSQL_BLOCK',
    job_action=>'BEGIN
    dbms_lock.sleep(10);
    END;',
    start_date=>systimestamp,
    repeat_interval=>'FREQ=MINUTELY;INTERVAL=1',
    number_of_arguments=>0,
    enabled=>TRUE,
    comments=>'Job duration is 10 seconds, launches every minute'
  );

END;

由于它已创建为已启用,因此它将自动开始运行。您可以通过查看日志(dba_scheduler_job_run_details)验证这一点,并可以通过dba_scheduler_jobs查看基本属性