0

![在此处输入图像描述][1]

我刚刚更新了新版本的数据库。我之前使用过Oracle 数据库版本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

4

1 回答 1

2

要手动运行,请尝试:

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

并手动停止,使用:

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

如果您的问题是如何在 Oracle 中调度作业,这是一个很大的话题(请参阅文档),但一个简单的示例是:

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 查看基本属性

于 2013-09-23T15:24:14.413 回答