定时任务首先先创建定时任务中的存储过程

create or replace procedure pro_jggl as                                          --创建存储过程

begin                                 --begin和end中间的就是pl/sql

  delete yl_jggl where jjgbh = 'JGBM171002000407';                --sql 定时任务运行时触发的sql

  commit;                        --提交sql

end;                                

这样就新建了个名为 pro_jggl的定时任务存储过程

然后在创建定时任务

declare jobno number;                                                --系统会自动分配一个jobno的定时任务号

begin

  dbms_job.submit(job=> jobno,                              --是把job赋值为jobno,job名称

          what=>'pro_jggl;',           --what赋值 这里是job绑定的存储过程  ****注意:这里引号中的存储过程名后面要加上分号。

          next_date=>sysdate,               --next_date赋值  这里是下次定时任务运行时的时间 sysdate是系统时间  也就是立即执行

          interval=>'sysdate+1/(24*60)'  --interval 赋值 这里是定时任务运行时每次的间隔时间  1/(24*60)是说明一分钟  1天除以24*60就是一分钟  关于时间会在后面详解。

  )

end;

如果出现ora报错说不是所有变量都以绑定,说明 在

这里没有赋值。

-------------------------------------------job修改------------------------------------------------------

dbms_job.remove(jobid);       --删除job这个定时任务

dbms_job.what(jobid,'pro_job_jggl;')     --修改job定时任务的存储过程

dbms_job.next_date(jobid,to_date('2018-01-04 12:00:00','yyyy-mm-dd hh24:mi:ss'))       --修改job的下次执行时间

dbms_job.interval(jobid,'sysdate+1/24')  --修改job的间隔时间

dbms_job.run(jobid);   --启动job这个任务

dbms_job.broken(jobid,true)   --这个true为broken的boolean值  true的时broken为‘Y’定时任务停止   false的时候就为‘N’定时任务运行

***注意:这些语句为plsql语句  放到 begin  end中执行,这里的jobid用的是 job的id, 查询user_jobs查看当前job的id

-----------------------------------job并发量(队列)---------------------------------------------------------------

select * from v$parameter where name = 'job_queue_processes';   --查看job_queue_processes参数  就是并发量

alert system set job_queue_processes = 10 ;     --修改job的并发量个数

----------------------------关于job的表----------------------------

select * from user_jobs查看当前用户运行的job情况,可以查看到创建的job是否正常运行

字段(列) 类型 描述
job number 任务的唯一标示号
log_user varchar2(30) 提交任务的用户
priv_user varchar2(30) 赋予任务权限的用户
schema_user varchar2(30) 对任务作语法分析的用户模式
last_date date 最后一次成功运行任务的时间
last_sec varchar2(8) 如hh24:mm:ss格式的last_date日期的小时,分钟和秒
this_date date 正在运行任务的开始时间,如果没有运行任务则为null
this_sec varchar2(8) 如hh24:mm:ss格式的this_date日期的小时,分钟和秒
next_date date 下一次定时运行任务的时间

select * from dba_jobs --查询job的信息

两张表都是视图

user_jobs 查询当前用户的job

dba_jobs 是查询所有的。

DBA_JOBS_RUNNING 是查询运行着的job

当broken为N时  就是启动了,为y时就是停掉了。

-----------------------------------定时任务的属性interval详解--------------------------------------

Internal参数是一个表示Oracle合法日期表达式的字符串。这个日期字符串的值在每次任务被执行时算出,算出的日期表达式有两种可能,要么是未来的一个时间要么就是null。这里要强调一点:很多开发者都没有意识到next_date是在一个任务开始时算出的,而不是在任务成功完成时算出的。

当任务成功完成时,系统通过更新任务队列目录表将前面算出的next_date值置为下一次任务要运行的时间。当由interval表达式算出next_date是null时,任务自动从任务队列中移出,不会再继续执行。因此,如果传递一个null值给interval参数,则该任务仅仅执行一次。

通过给interval参数赋各种不同的值,可以设计出复杂运行时间计划的任务。

在interval中

sysdate+1/24     --这个是间隔一个小时

sysdate+1         --这个是间隔一天

sysdate+7         --这个是间隔一个星期

'TRUNC(SYSDATE + 1)'         每天午夜12点

'TRUNC(SYSDATE + 1) + (8*60+30)/(24*60)'    每星期二中午12点

'TRUNC(LAST_DAY(SYSDATE ) + 1)'     每个月第一天的午夜12点

'TRUNC(ADD_MONTHS(SYSDATE + 2/24, 3 ), 'Q' ) -1/24' 每个季度最后一天的晚上11点

'TRUNC(LEAST(NEXT_DAY(SYSDATE, ''SATURDAY"), NEXT_DAY(SYSDATE, "SUNDAY"))) + (6×60+10)/(24×60)'

无论通过怎样设置interval日期表达式也不能满足要求。这时因为一个任务的下一次运行时间在任务开始时才计算,而在此时是不知道任务在何时结束的。遇到这种情况怎么办呢?当然办法肯定是有的,我们可以通过为任务队列写过程的办法来实现。这里我只是简单介绍以下,可以在前一个任务队列执行的过程中,取得任务完成的系统时间,然后加上指定的时间间隔,拿这个时间来控制下一个要执行的任务。这里有一个前提条件,就是目前运行的任务本身必须要严格遵守自己的时间计划。

oracle创建定时器详解|interval属性的更多相关文章

  1. Java从入门到精通——数据库篇Oracle 11g服务详解

    装上Oracle之后大家都会感觉到我们的电脑慢了下来,如何提高计算机的速度呢?我们应该打开必要的服务,关闭没有用的服务.下面是Oracle服务的详解: Oracle ORCL VSS Writer S ...

  2. Oracle 11g服务详解

    装上Oracle之后大家都会感觉到我们的电脑慢了下来,如何提高计算机的速度呢?我们应该打开必要的服务,关闭没有用的服务.下面是Oracle服务的详解: Oracle ORCL VSS Writer S ...

  3. Oracle执行计划详解

    Oracle执行计划详解 --- 作者:TTT BLOG 本文地址:http://blog.chinaunix.net/u3/107265/showart_2192657.html --- 简介:   ...

  4. oracle表分区详解

    原文来自:http://www.cnblogs.com/leiOOlei/archive/2012/06/08/2541306.html oracle表分区详解 从以下几个方面来整理关于分区表的概念及 ...

  5. Oracle权限管理详解

    Oracle权限管理详解 转载--CzmMiao的博客生活 Oracle 权限 权限允许用户访问属于其它用户的对象或执行程序,ORACLE系统提供三种权限:Object 对象级.System 系统级. ...

  6. Oracle外部表详解(转载)

    (外部表创建主要注意创建目录访问权限问题.目录路径格式无空格等不相关字符,即必须是当前表访问用户可以访问:关于表中行数的限制问题,如果不加限制注意添加reject limit unlimited:表中 ...

  7. oracle tkprof 工具详解

    oracle  tkprof 工具详解 今天是2013-09-26,进行tkprof工具使用学习,在此记录一下笔记: 一)查看需要跟踪会话信息: select s.sid,s.serial#,s.us ...

  8. Oracle表空间详解

    Oracle表空间详解 1.表空间的分类 Oracle数据库把表空间分为两类:系统表空间和非系统表空间. 1.1系统表空间指的是数据库系统创建时需要的表空间,这些表空间在数据库创建时自动创建,是每个数 ...

  9. [转]Oracle执行计划详解

    Oracle执行计划详解 --- 作者:TTT BLOG 本文地址:http://blog.chinaunix.net/u3/107265/showart_2192657.html --- 简介:   ...

随机推荐

  1. centos 特殊权限 各种搜索命令 lsattr ,chattr,suid,sgid,sbit,file,type是否是内置命令,stat文件属性 ,whereis,locate,find,ln 内部命令和外部命令 第五节课

    centos 特殊权限 各种搜索命令 lsattr ,chattr,suid,sgid,sbit,file,type是否是内置命令,stat文件属性 ,whereis,locate,find,ln   ...

  2. 203-ReactDOM

    一.概述 加载方式: <script> ES6:import ReactDOM from 'react-dom' ES5:var ReactDOM = require('react-dom ...

  3. python基础之员工信息表作业

    周末大礼包 文件存储格式如下: id, name, age, phone, job 1, Alex, 22, 13651054608, IT 2, Egon, 23, 13304320533, Tea ...

  4. 常微分方程初值问题:多步预测-修正方法 [MATLAB]

    #先上代码后补笔记# #可以直接复制粘贴调用的MATLAB函数代码!# 1. 亚当斯(Adams)预测-修正算法 由亚当斯-巴什福特(Adams-Bashforth)显式预测公式和亚当斯-莫顿(Ada ...

  5. 在GUI程序中使用控制台的两种方法

    win32程序启用控制台(控制台文件名:conout$,conin$,conerr$) //添加控制台,加入在程序构造函数中 AllocConsole(); freopen("conin$& ...

  6. kylin与superset整合

    前提: kylin安装以及配置可以参考 https://www.cnblogs.com/654wangzai321/p/9676204.html 我这边用的Linux自带的python2.7,为了保证 ...

  7. spring AOP的两种代理

    本篇记录下spring AOP的两种代理,为下一篇AOP实现做下铺垫. 1.JDK动态代理  2.cglib代理 1.如果目标对象实现了接口,默认情况下会采用JDK的动态代理实现AOP2.如果目标对象 ...

  8. mongo数据库连接工具类(C#)

    Framework版本:.Net Framework 4 using System; using System.Collections.Generic; using System.Linq; usin ...

  9. C++ string和C风格字符串

    https://msdn.microsoft.com/en-us/library/syxtdd4f.aspx#basic_string__replace If you need to convert ...

  10. Vue学习笔记之Vue的面向对象

    0x00 准备工作 JavaScript 语言中,生成实例对象的传统方法是通过构造函数. function Animal(name,age){ this.name = name; this.age = ...