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实现定时任务管理的方式,正确使用这两种方式,可以有效地将任务的执行按照精确的控制时间、频率去执行,实现定时任务的管理。


数据运维技术 » Oracle如何管理定时运行的Job(oracle 运行job)