每小时自动运行oracle程序

问题描述 投票:3回答:1

我在oracle中创建了一个简单的过程。伪代码是

CREATE OR REPLACE
 procedure  update_summary
 begin
  delete from summary table;
  make different calculations from different tables, insert values row by row in 
  summary table;
 end;

我希望这个程序每小时自动运行,因为如果我从我的应用程序的前端调用它,它安静的时间饥饿,用户认为该页面已被挂起。帮助将受到高度赞赏。

oracle plsql procedure
1个回答
7
投票

使用DBMS_SCHEDULER并创建一个类似于此的工作:

begin

    DBMS_SCHEDULER.CREATE_JOB (
         job_name           => 'CALC_JOB',
         job_type           => 'STORED_PROCEDURE',
         job_action         => 'UPDATE_SUMMARY',
         start_date         => current_timestamp,
         repeat_interval    => 'FREQ=hourly;',
         enabled            => true);

end;
/

更多细节(特别是关于手册中的repeat_interval参数:http://docs.oracle.com/cd/B28359_01/appdev.111/b28419/d_sched.htm#CIHEHDHA

begin .. end只是必需的,因为SQL * PLus不允许execute命令跨越多行。如果您使用的是其他SQL客户端,则可能不需要这样。

我通常还会为作业设置日志记录级别,以便在USER_JOB_RUN_DETAIL中查看更多信息

execute dbms_scheduler.set_attribute(name => 'CALC_JOB', attribute => 'logging_level', value => DBMS_SCHEDULER.LOGGING_FULL);
© www.soinside.com 2019 - 2024. All rights reserved.