Oracle 创建、暂停、更改、删除 定时任务job

oracle job 用来在数据库层面,定时执行存储过程或者是 SQL 语句。

 

--创建、暂停、修改、删除 job

 

--查询 当前库中运行的 job ;

 

 
  1.  
  2.  
  3. SELECT t.* FROM dba_jobs t

  4.  

 

--创建一个 定时任务 job

 

 
  1. declare

  2. job number;

  3. BEGIN

  4. DBMS_JOB.SUBMIT(

  5. JOB => job, /*自动生成JOB_ID*/

  6. WHAT => 'GET_WARNING_INFO(2, 202, ''2,44,11'');', /*需要执行的存储过程名称或SQL语句*/

  7. NEXT_DATE => sysdate, /*初次执行时间-立即执行*/

  8. INTERVAL => 'trunc(sysdate,''mi'')+1/(24*60)' /*每隔1分钟执行一次*/

  9. );

  10. commit;

  11. end;

 

 

--根据某个job下次的执行时间

 

 
  1.  
  2.  
  3. SELECT job,next_date,what FROM dba_jobs WHERE JOB = 定时任务的唯一标识码JOB; /*定时任务的下一次执行时间*/

  4.  

 

 

--手动调用job

 

 
  1.  
  2.  
  3. begin

  4. DBMS_JOB.RUN(40); /*40 job的id*/

  5. end;

  6.  


--停止 job

 

 

 
  1. begin

  2. dbms_job.broken(jobId,true,next_date); /*停止一个job,jobId, job的ID,里面参数true也可是false,next_date(某一时刻停止)也可是sysdate(立刻停止)。 */

  3. commit;

  4. end;


--删除 job

 

 

 
  1.  
  2.  
  3. begin

  4. dbms_job.remove(83); /*删除自动执行的job,参数是 job的id*/

  5. commit;

  6. end;

  7.  

 

 

--修改 job 的间隔时间

 

 
  1.  
  2.  
  3. begin

  4. dbms_job.interval(job,interval); /*job job的ID,interval: 计算下一次任务执行的时间表达式*/

  5. commit;

  6. end;

  7.  


 

 

 

--修改下一次执行时间

 

 
  1.  
  2.  
  3. begin

  4. dbms_job.next_date(job,next_date); /*job: job 的ID;nex_date:要修改后的计算下一次执行的时间表达式*/

  5. commit;

  6. end;

  7.  

 

 

 

 

--修改定时任务 job 要执行的操作

 

 
  1.  
  2.  
  3. begin

  4. dbms_job.what('newProcedures();'); /*newProcedures(); 要更改的新操作名称*/

  5. commit;

  6. end;

  7.  


 

 


其他知识点:

 

 

 

dba_jobs 表中字段含义:

 

JOB                                         任务的唯一标识码

LOG_USER         提交任务的用户

PRIV_USER         赋予任务权限的用户

SCHEMA_USER           对用户作语法分析的用户模式

LAST_DATE         最后一次成功执行任务的时间

LAST_SEC         最后一次成功执行任务的时间的时分秒

THIS_DATE         正在执行的任务的开始时间,若没有则为空

THIS_SEC 正在执行的任务的开始时间的时分秒,若没有则为空

NEXT_DATE 下一次执行定时任务的时间

NEXT_SEC 下一次执行定时任务的时间的时分秒

TOTAL_TIME 执行当前任务所需要的时间,单位:秒

BROKEN         标志参数,Y表示任务中断,以后不会再运行 

INTERTAL 计算下一次执行定时任务的时间表达式

FAILURES 当前定时任务执行失败的总次数

WHAT 执行任务的PL/SQL代码块

NLS_ENV 任务执行的NLS会话设置

MISC_ENV 定时任务运行的其他一些参数设置

INSTANCE 标识当前任务运行是否受限,0 没有受限

 

 

 

INTERVAL 部分参数值示例:

每天午夜12点: 'TRUNC(SYSDATE + 1)'
每天早上8点30分: 'TRUNC(SYSDATE + 1) + (8*60+30)/(24*60)'
每星期二中午12点: 'NEXT_DAY(TRUNC(SYSDATE ), ''TUESDAY'' ) + 12/24'
每个月第一天的午夜12点: 'TRUNC(LAST_DAY(SYSDATE ) + 1)'
每个季度最后一天的晚上11点: 'TRUNC(ADD_MONTHS(SYSDATE + 2/24, 3 ), 'Q' ) -1/24'
每星期六和日早上6点10分: 'TRUNC(LEAST(NEXT_DAY(SYSDATE, ''SATURDAY"), NEXT_DAY(SYSDATE, "SUNDAY"))) + (6×60+10)/(24×60)'
每月25号00:00执行: 'TRUNC(LAST_DAY(SYSDATE ) + 25)'
--------------------------
1:每分钟执行
Interval => TRUNC(sysdate,'mi') + 1/ (24*60)

Interval => sysdate+1/1440
 
2:每天定时执行
例如:每天的凌晨1点执行
Interval => TRUNC(sysdate) + 1 +1/ (24)


3:每周定时执行
例如:每周一凌晨1点执行
Interval => TRUNC(next_day(sysdate,'星期一'))+1/24
 
4:每月定时执行
例如:每月1日凌晨1点执行
Interval =>TRUNC(LAST_DAY(SYSDATE))+1+1/24
 
5:每季度定时执行
例如每季度的第一天凌晨1点执行
Interval => TRUNC(ADD_MONTHS(SYSDATE,3),'Q') + 1/24
 
6:每半年定时执行
例如:每年7月1日和1月1日凌晨1点
Interval => ADD_MONTHS(trunc(sysdate,'yyyy'),6)+1/24
 
7:每年定时执行
例如:每年1月1日凌晨1点执行
Interval =>ADD_MONTHS(trunc(sysdate,'yyyy'),12)+1/24

 

 

 

原文参考:http://cherryqq.iteye.com/blog/855022

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值