Oracle数据库Job应用

时间:2024-03-30 15:36:26

1.Job简介

目前Oracle数据库设置定时任务job调度一般有两种方式,分别是dbms_scheduler创建job调度和dbms_job创建job调度。dbms_scheduler创建job调度是在10g以后才有的,甲骨文公司为了用来替换dbms_job而提供了更强大的功能与更灵活的机制/管理。下面介绍这两种方式。

2.dbms_scheduler

2.1参数介绍

Oracle数据库Job应用

  • 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

创建存储过程:

Oracle数据库Job应用

创建job方式一:执行SQL语句

Oracle数据库Job应用

创建job方式二:PL/SQL界面操作,如下图所示

Oracle数据库Job应用

Oracle数据库Job应用

常用过程:

  • 删除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列表:

Oracle数据库Job应用