ORACLE实现Job定时计划任务

在ORACLE数据库操作中,有时候我们需要定时的执行某些存储过程。那oracle如何实现呢?
从ORACLE 10.1版本开始,ORACLE开发了一个新的包DBMS_SCHEDULER。这个包就能帮解决我们的定时计划任务的问题。

一. 新增job

1. job创建实例
BEGIN
  DBMS_SCHEDULER.CREATE_JOB(JOB_NAME => 'JOB_EXWH_BPARTNER_STATIC',
                            JOB_TYPE => 'PLSQL_BLOCK',
                            JOB_ACTION => 'DECLARE
IO_ROW NUMBER;
IO_STATUS NUMBER;
VO_SQLERR VARCHAR2(1000);
BEGIN
  --调用存储过程
  BI_DM.P_F_T_EXWH_BPARNER_STATIC(sysdate, IO_ROW, IO_STATUS, VO_SQLERR);
END;',
                            REPEAT_INTERVAL => 'FREQ=DAILY;BYHOUR=15;BYMINUTE=00;BYSECOND=00;INTERVAL=1;',
                            JOB_CLASS => 'DEFAULT_JOB_CLASS',
                            ENABLED => TRUE,
                            AUTO_DROP => FALSE,
                            COMMENTS => '这是个测试');
END;
2.job语句
DBMS_SCHEDULER.CREATE_JOB
3.job参数
JOB_NAME: job名称
JOB_TYPE: job类型
  • PLSQL_BLOCK :表示任务执行的是一个PL/SQL匿名块。
  • STORED_PROCEDURE :表示任务执行是存储过程。
  • EXECUTABLE :表示任务执行的是一个外部程序,比如说操作系统命令。
  • CHAIN :表示任务执行的是一个CHAIN。
JOB_ACTION: job执行动作
REPEAT_INTERVAL:job的计划
JOB_CLASS:指定任务关联的CLASS,默认值为DEFAULT_JOB_CLASS
ENABLE: 创建时检查job有效性
AUTO_DROP: 在job完成之后或者被自动disabled之后job将被自动删除
COMMENTS: 备注
START_DATE: job生效时间
END_DATE: job结束时间
4.REPEAT_INTERVAL参数
FREQ:
YEARLY:以年单位
MONTHLY:以月单位
WEEKLY:以周单位
DAILY:单位
HOURLY:小时单位
MINUTELY:单位
SECONDLY:单位
INTERVAL: 执行次数
BYMONTHDAY:月份中的日期
BYDAY:星期
BYHOUR:小时
BYMINUTE:分钟
BYSECOND:秒

二. 查询job

--查询该用户所有job
select * from USER_SCHEDULER_JOBS;
--查询正在运行的job
select * from USER_SCHEDULER_RUNNING_JOBS

三. 运行job

BEGIN
  DBMS_SCHEDULER.run_job(use_current_session =>FALSE ,job_NAME => 'JOB_EXWH_BPARTNER_STATIC');
END;

四. 删除job

BEGIN
  DBMS_SCHEDULER.drop_job(job_name=>'JOB_EXWH_BPARTNER_STATIC',force=>FALSE);
 END;
force :如果是 FALSE 则如果有其他的 job 在使用这个 schedule 就不会删除这个 schedule ,如果是 TRUE 则不管有没有其他 job 使用这个 schedule 都会将这个 schedule 删除。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值