1.Job简介
目前Oracle数据库设置定时任务job调度一般有两种方式,分别是dbms_scheduler创建job调度和dbms_job创建job调度。dbms_scheduler创建job调度是在10g以后才有的,甲骨文公司为了用来替换dbms_job而提供了更强大的功能与更灵活的机制/管理。下面介绍这两种方式。
2.dbms_scheduler
2.1参数介绍
- job_name:job名字;
- job_type:job类型,支持三种类型:PLSQL_BLOCK——PL/SQL语句块、STORED_PROCEDURE——存储过程、 EXECUTABLE——外部程序(外部程序可以是一个shell脚本,也可以是操作系统级别的指令);
- job_action:根据job_type的不同,job_action有相对应的内容;
- number_of_arguments:参数个数;
- start_date:执行开始时间;
- repeat_interval:指定job执行频率(如每分钟执行一次、每天执行一次等);
- end_date:执行结束时间;
- job_class:jobclass的名字;
- enabled:指定是否自动**job,为true代表自动**,false代表不**;
- auto_drop:执行完是否自动drop;
- comments:对于job的简单说明。
2.2关于定时任务的一些常用过程
1) dbms_scheduler.run(jobName) 运行job
2) dbms_scheduler.stop_job(jobName,force) 停止job,force默认为false,Oracle建议false停止失败情况下,使用true,且使用true需要有manage scheduler权限
3) dbms_scheduler.drop_job(jobName) 删除job
4) dbms_scheduler.enable(jobName) 打开job
5) dbms_scheduler.disable(jobName,force) 禁用job,force参数用于dependencies,如果TRUE,即使其他对象依赖于它,操作也能成功
3.dbms_job
创建存储过程:
创建job方式一:执行SQL语句
创建job方式二:PL/SQL界面操作,如下图所示
常用过程:
- 删除job: dbms_job.remove(jobno);
- 修改要执行的操作: job:dbms_job.what(jobno, what);
- 修改下次执行时间:dbms_job.next_date(jobno, next_date);
- 修改间隔时间:dbms_job.interval(jobno, interval);
- 启动job: dbms_job.run(jobno);
- 停止job: dbms.broken(jobno, broken, nextdate);–-broken为boolean值。
- 查询数据库中job列表: