Scheduler 可以简单简单的帮助我们调度成百上千的tasks。Oracle Scheduler 通过在
DBMS_SCHEDULER PL/SQL 包中存储的过程来执行。
一. 使用Jobs
JOBS,其实就是Scheduler 管理的一个(或多个)任务的执行调度。
1.1 创建Jobs
通过DBMS_SCHEDULER 包来创建Jobs,是使用其CREATE_JOB 过程。在创建Job 时,用户可以指定要执行的任务,调度信息(什么时候执行,执行周期,终止日期等)以及其它一些任务相关的属性。例如:
create table TEST (id number);
CREATE OR REPLACE PROCEDURE IT
AS
BEGIN
insert into TEST VALUES(1);
END;
SQL> BEGIN
DBMS_SCHEDULER.CREATE_JOB (
job_name => 'JobTest',
job_type => 'STORED_PROCEDURE',
job_action => 'SYSTEM.IT',
start_date => sysdate,
repeat_interval => 'FREQ=MINUTELY;INTERVAL=10');
END;
/
事实上,有权限的话,用户也可以创建其它SCHEMA 下的JOB,只需要在指定JOB_NAME 时,按照schema.job_name 的格式即可。这种情况下创建的JOB,其CREATED 与OWNER 有可能并不相同。当使用CREATE_JOB 过程创建JOB 时,可指定的参数值很多,只不过多数情况下用户仅指定部分参数即可满足需求。
其中,上例中指定的参数,分别代表的含义如下:
JOB_NAME:指定任务的名称,必选值,注意要确保指定的名称唯一。
JOB_TYPE:任务执行的操作类型,必选值,有下列几个可选值:
(1) PLSQL_BLOCK:表示任务执行的是一个PL/SQL 匿名块。
(2)STORED_PROCEDURE:表示任务执行的是ORACLE 过程(含PL/SQL PROCEDURE 和JAVA PROCEDURE),本例中正是指定这一参数值。
(3)EXECUTABLE:表示任务执行的是一个外部程序,比如说操作系统命令。
(4)CHAIN:表示任务执行的是一个CHAIN。
JOB_ACTION:任务执行的操作,必选值,应与JOB_TYPE 类型中指定的参数相匹配。比如说对于PL/SQL 匿名块,此处就可以放置PL/SQL 块的具体代表,类似DECLARE .. BEGIN ..END这类;如果是ORACLE 过程,那么此处应该指定具体的过程名,注意由于任务执行,即使过程中有OUT之类参数,实际执行时也不会有输出的。
START_DATE:指定任务初次执行的时间,本参数可为空,当为空时,表示任务立刻执行,效果等同于指定该参数值为SYSDATE。
REPEAT_INTERVAL:指定任务执行的频率,比如多长时间会被触发再次执行。本参数也可以为空,如果为空的话,就表示当前设定的任务只执行一次。REPEAT_INTERVAL 参数与标准JOB 中的INTERVAL 参数有很大区别,相比之下&#
一. 使用Jobs
1.1 创建Jobs
create table TEST (id number);
CREATE OR REPLACE PROCEDURE IT
AS
BEGIN
insert into TEST VALUES(1);
END;
SQL> BEGIN
DBMS_SCHEDULER.CREATE_JOB (
job_name => 'JobTest',
job_type => 'STORED_PROCEDURE',
job_action => 'SYSTEM.IT',
start_date => sysdate,
repeat_interval => 'FREQ=MINUTELY;INTERVAL=10');
END;
/
其中,上例中指定的参数,分别代表的含义如下:
JOB_NAME:指定任务的名称,必选值,注意要确保指定的名称唯一。
JOB_TYPE:任务执行的操作类型,必选值,有下列几个可选值:
(1) PLSQL_BLOCK:表示任务执行的是一个PL/SQL 匿名块。
(2)STORED_PROCEDURE:表示任务执行的是ORACLE 过程(含PL/SQL PROCEDURE 和JAVA PROCEDURE),本例中正是指定这一参数值。
(3)EXECUTABLE:表示任务执行的是一个外部程序,比如说操作系统命令。
(4)CHAIN:表示任务执行的是一个CHAIN。
JOB_ACTION:任务执行的操作,必选值,应与JOB_TYPE 类型中指定的参数相匹配。比如说对于PL/SQL 匿名块,此处就可以放置PL/SQL 块的具体代表,类似DECLARE .. BEGIN ..END这类;如果是ORACLE 过程,那么此处应该指定具体的过程名,注意由于任务执行,即使过程中有OUT之类参数,实际执行时也不会有输出的。
START_DATE:指定任务初次执行的时间,本参数可为空,当为空时,表示任务立刻执行,效果等同于指定该参数值为SYSDATE。
REPEAT_INTERVAL:指定任务执行的频率,比如多长时间会被触发再次执行。本参数也可以为空,如果为空的话,就表示当前设定的任务只执行一次。REPEAT_INTERVAL 参数与标准JOB 中的INTERVAL 参数有很大区别,相比之下&#