Oracle如何管理定时运行的Job(oracle 运行job)
Oracle的数据库软件有两种管理定时运行的Job的方式:调度程序( Scheduler )和基于挂起(Pending)的定时Job管理。
1、调度程序( Scheduler)
调度程序(Scheduler)管理定时运行的Job,是Oracle实现定时任务管理的主要方式。它有着可以针对多种情况进行处理的调度程序,让用户在指定的时间空间里去执行指定的任务以实现最好的效果。Oracle的调度程序可以执行的Job类型包括:PL/SQL存储过程、SQL语句、外部作业、应用程序和内存脚本程序等。实现该功能调度程序里有三个模块,它们是:job(任务)、程序(Program)和计划(Schedule)。
具体实现调度程序(Scheduler)管理定时运行的Job,如下:
1)创建调度程序:
SQL > CREATE SCHEDULER job_scheduler;
2)创建Job:
SQL > CREATE JOB job_name
AS Program => ‘task_name’,
Type => ‘STORED_PROCEDURE’,
Args => ‘p1,p2,p3’;
3)设置Job的调度频率:
SQL > ALTER JOB job_name SET SCHEDULE AT ‘Dynasty 0 0, 1:00:00’ CYCLE MONTHLY;
4)启动Job:
SQL > ALTER JOB job_name START;
2、基于挂起(Pending)的定时Job管理
基于挂起(Pending)的定时Job管理用来实现只需运行一次的任务,它包括两个模块:Job(任务)和挂起(Pending)。在启动Job之前,调度会先将Job置为挂起(Pending)状态,并且设定了指定的时间及调度频率,这样,Job 就可以在指定时间来运行或重复运行,而不需要每次都要运行。
具体实现基于挂起(Pending)的定时Job管理,如下:
1) 创建Job:
SQL > CREATE JOB job_name
AS Program => ‘task_name’,
Type => ‘STORED_PROCEDURE’,
Args => ‘p1,p2,p3’;
2) 设置Job的调度频率:
SQL > ALTER JOB job_name SET PENDING AT ‘Dynasty 0 0, 1:00:00’ CYCLE MONTHLY;
3) 触发Job:
SQL > ALTER JOB job_name START;
总之,Oracle调度程序( Scheduler )和基于挂起(Pending)的定时Job管理都是Oracle实现定时任务管理的方式,正确使用这两种方式,可以有效地将任务的执行按照精确的控制时间、频率去执行,实现定时任务的管理。