oracle数据库对象-schdeule_job

dbms_scheduler包提供的计划任务,是比dbms_job更强大,更好管理。数据库为oracle 11g。

1、创建测试表
create table SCHEDULE_JOB_TEST(a date);

2、用dbms_scheduler创建job

begin
  dbms_scheduler.create_job(job_name            => 'test_schedule_job',
                            job_type            => 'PLSQL_BLOCK',
                            job_action          => 'insert into JOB_TEST values(sysdate);',
number_of_arguments => 0, start_date => to_date('10-01-2020 00:00:00', 'dd-mm-yyyy hh24:mi:ss'), repeat_interval => 'Freq=Minutely;Interval=5', end_date => null, job_class => 'DEFAULT_JOB_CLASS', enabled => FALSE, auto_drop => TRUE, comments => '测试scheduler');
end; /

3、说明
1) job_name:任务名称
2)job_type:oracle 11g支持4种,取值
‘PLSQL_BLOCK’, ‘STORED_PROCEDURE’, ‘EXECUTABLE’, or ‘CHAIN’
(plsql语句块、存储过程、外部程序、作业链条)
3) job_action:根据job_type的不同,有不同的含义
如果job_type指定的是PL/SQL块,就需要输入完整的PL/SQL代码;
如果job_type指定的是存储过程,就需要指定存储过程的名字;
如果job_type指定的外部程序,就需要输入script的名称或者操作系统的指令名;
如果job_type指定的作业链条,需要输入chain的名称;
4)number_of_arguments:job的参数
5)start_date:开始时间
6)repeat_interval:运行间隔时间
7)end_date:结束时间
8)job_class:指定任务关联的CLASS,默认值为DEFAULT_JOB_CLASS
9)enabled:指定任务是否启用
10)auto_drop:当该标志被置为TRUE时,ORACLE会在满足条件时自动删除创建的任务
任务已过期;
任务最大运行次数已达MAX_RUNS的设置值;
任务未指定REPEAT_INTERVAL参数,仅运行一次;
11)comments:注释信息

4、查询job
SELECT * FROM DBA_SCHEDULER_JOBS;

5、启用job

begin
  dbms_scheduler.enable('test_schedule_job');
end;
/

6、执行job

begin
  dbms_scheduler.run_job('test_schedule_job');
end;
/

7、停止job

begin
  dbms_scheduler.disable('test_schedule_job');
end;
/

8、删除job

begin
  dbms_scheduler.drop_job('test_schedule_job');
end;
/

参考资料:
https://blog.csdn.net/cymm_liu/article/details/22318865
https://docs.oracle.com/cd/E11882_01/appdev.112/e40758/d_sched.htm#ARPLS72235
https://blog.csdn.net/xlp789/article/details/98586077

发表评论

电子邮件地址不会被公开。 必填项已用*标注

:wink: :-| :-x :twisted: :) 8-O :( :roll: :-P :oops: :-o :mrgreen: :lol: :idea: :-D :evil: :cry: 8) :arrow: :-? :?: :!: