ORACLE实现Job定时计划任务
发布时间:2020-12-12 14:45:46 所属栏目:百科 来源:网络整理
导读:在ORACLE数据库操作中,有时候我们需要定时的执行某些存储过程。那oracle如何实现呢? 从ORACLE 10.1版本开始,ORACLE开发了一个新的包DBMS_SCHEDULER。这个包就能帮解决我们的定时计划任务的问题。 一. 新增job 1. job创建实例 BEGIN DBMS_SCHEDULER.CREATE
在ORACLE数据库操作中,有时候我们需要定时的执行某些存储过程。那oracle如何实现呢?
从ORACLE 10.1版本开始,ORACLE开发了一个新的包DBMS_SCHEDULER。这个包就能帮解决我们的定时计划任务的问题。
一. 新增job1. 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_JOB3.job参数JOB_NAME: job名称 JOB_TYPE: 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 三. 运行jobBEGIN DBMS_SCHEDULER.run_job(use_current_session =>FALSE,job_NAME => 'JOB_EXWH_BPARTNER_STATIC'); END; 四. 删除jobBEGIN DBMS_SCHEDULER.drop_job(job_name=>'JOB_EXWH_BPARTNER_STATIC',force=>FALSE); END;force:如果是FALSE则如果有其他的job在使用这个schedule就不会删除这个schedule,如果是TRUE则不管有没有其他job使用这个schedule都会将这个schedule删除。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |