a、创建job: dbms_job.submit(jobno,what,next_date,interval);
b、删除job: dbms_job.remove(jobno);
c、修改要执行的操作: job:dbms_job.what(jobno, what);
d、修改下次执行时间:dbms_job.next_date(jobno, next_date);
e、修改间隔时间:dbms_job.interval(jobno, interval);
f、启动job: dbms_job.run(jobno);
g、停止job: dbms.broken(jobno, broken, nextdate); –broken为boolean值

1、新建job
begin
sys.dbms_job.submit(job => :job, ----–系统会自动分配一个任务号jobno
what => 'INSERT INTO employees VALUES (7935,''SALLY'', NULL);',
next_date => to_date('16-12-2015 17:25:22', 'dd-mm-yyyy hh24:mi:ss'),
interval => 'SYSDATE+(1/(24*60))'); ----每分钟执行一次
commit;
end;
/

2、通过USER_JOBS视图查看一下创建的JOB信息

user_jobs表结构
字段(列) 类型 描述
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 job,
log_user,
to_char(last_date,'yyyy-mm-dd hh24:mi:ss') last_date,
to_char(next_date,'yyyy-mm-dd hh24:mi:ss') next_date,
interval,
what,
broken ----broken值为y,表示定时任务已停止;broken值为n,表示定时任务启动成功
from user_jobs
/

3、运行job
execute dbms_job.run(27);

begin
dbms_job.run(27);
end;
/

4、停止job

execute dbms_job.broken(27, true, sysdate);

begin
dbms_job.broken(27, true, sysdate);
end;
/

5、删除job

execute dbms_job.(27);

begin
dbms_job.remove(27);
end;
/

6、查看进程数
show parameter job_queue_processes;
必须大于0,否则执行下面的命令修改:
alter system set job_queue_processes=10;

7、关于job运行时间
(1):每分钟执行
Interval => TRUNC(sysdate,'mi') + 1/(24*60)
(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

8、job的运行频率设置
(1).每天固定时间运行,比如早上8:10分钟:Trunc(Sysdate+1) + (8*60+10)/24*60
(2).Toad中提供的:
每天:trunc(sysdate+1)
每周:trunc(sysdate+7)
每月:trunc(sysdate+30)
每个星期日:next_day(trunc(sysdate),'星期日')
每天6点:trunc(sysdate+1)+6/24
半个小时:sysdate+30/(24*60)
(3).每个小时的第15分钟运行,比如:8:15,9:15,10:15…:trunc(sysdate,'hh')+(60+15)/(24*60)

二、dbms_job学习
1、新建job
BEGIN
DBMS_SCHEDULER.CREATE_JOB (
job_name => 'JOB_TEST',
job_type => 'STORED_PROCEDURE',
job_action => 'TEST_JOBPROCE ',
start_date => sysdate,
repeat_interval => 'FREQ=DAILY;INTERVAL=1');
END;
/

上例中指定的参数,分别代表的含义如下:

JOB_NAME :指定任务的名称,必选值,注意要确保指定的名称唯一。
JOB_TYPE :任务执行的操作类型,必选值,有下列几个可选值:
PLSQL_BLOCK :表示任务执行的是一个PL/SQL匿名块。
STORED_PROCEDURE :表示任务执行的是Oracle过程(含PL/SQL PROCEDURE和JAVA PROCEDURE),本例中正是指定这一参数值。
EXECUTABLE :表示任务执行的是一个外部程序,比如说操作系统命令。
CHAIN :表示任务执行的是一个CHAIN。
JOB_ACTION

:任务执行的操作,必选值,应与JOB_TYPE类型中指定的参数相匹配。比如说对于PL/SQL匿名块,此处就可以放置PL/SQL块的具体代表,类似DECLARE
.. BEGIN
..END这类;如果是ORACLE过程,那么此处应该指定具体的过程名,注意由于任务执行,即使过程中有OUT之类参数,实际执行时也不会有输出的。
START_DATE :指定任务初次执行的时间,本参数可为空,当为空时,表示任务立刻执行,效果等同于指定该参数值为SYSDATE。
REPEAT_INTERVAL

:指定任务执行的频率,比如多长时间会被触发再次执行。本参数也可以为空,如果为空的话,就表示当前设定的任务只执行一次。REPEAT_INTERVAL参数需要好好说说,REPEAT_INTERVAL参数的语法结构要复杂的多。其中最重要的是FREQ和INTERVAL两个关键字。
FREQ 关键字用来指定间隔的时间周期,可选参数有:YEARLY, MONTHLY, WEEKLY, DAILY, HOURLY, MINUTELY, and SECONDLY,分别表示年、月、周、日、时、分、秒等单位。
INTERVAL 关键字用来指定间隔的频繁,可指定的值的范围从1-99。
例如:REPEAT_INTERVAL=>'FREQ=DAILY;INTERVAL=1';表示每天执行一次,如果将INTERVAL改为7就表示每7天执行一次,效果等同于FREQ=WEEKLY;INTERVAL=1。

一般来说,使用DBMS_SCHEDULER.CREATE_JOB创建一个JOB,至少需要指定上述参数中的前3项。除此之外,还可以在CREATE_JOB时,指定下列参数:

NUMBER_OF_ARGUMENTS :指定该JOB执行时需要附带的参数的数量,默认值为0,注意当JOB_TYPE列值为PLSQL_BLOCK或CHAIN时,本参数必须设置为0,因为上述两种情况下不支持附带参数。
END_DATE

:指定任务的过期时间,默认值为NULL。任务过期后,任务的STATE将自动被修改为COMPLETED,ENABLED被置为FALSE。如果该参数设置为空的话,表示该任务永不过期,将一直按照REPEAT_INTERVAL参数设置的周期重复执行,直到达到设置的MAX_RUNS或MAX_FAILURES值。
JOB_CLASS :指定任务关联的CLASS,默认值为DEFAULT_JOB_CLASS。关于JOB CLASS的信息就关注本系列的后续文章。
ENABLED :指定任务是否启用,默认值为FALSE。FALSE状态表示该任务并不会被执行,除非被用户手动调用,或者用户将该任务的状态修改为TRUE。
AUTO_DROP :当该标志被置为TRUE时,ORACLE会在满足条件时自动删除创建的任务
任务已过期;
任务最大运行次数已达MAX_RUNS的设置值;
任务未指定REPEAT_INTERVAL参数,仅运行一次;
COMMENTS :设置任务的注释信息,默认值为NULL。

2、修改gob
begin
dbms_scheduler.set_attribute('JOB_TEST','repeat_interval','FREQ=minutely;INTERVAL=1');
end;

3、查询job
select job_name,job_type,job_action,start_date,repeat_interval,end_date,enabled,auto_drop,state,run_count,max_runs
from user_scheduler_jobs;

4、启停job
exec dbms_scheduler.enable('j_test'); --启用jobs

exec dbms_scheduler.disable('j_test'); --禁用jobs

exec dbms_scheduler.run_job('j_test'); --执行jobs

exec dbms_scheduler.stop_job('j_test'); --停止jobs

exec dbms_scheduler.drop_job('j_test'); --删除jobs

dbms_job基础的更多相关文章

  1. dbms_job和dbms_job基础学习

    一.dbms_job学习 a.创建job: dbms_job.submit(jobno,what,next_date,interval);b.删除job: dbms_job.remove(jobno) ...

  2. java基础集合经典训练题

    第一题:要求产生10个随机的字符串,每一个字符串互相不重复,每一个字符串中组成的字符(a-zA-Z0-9)也不相同,每个字符串长度为10; 分析:*1.看到这个题目,或许你脑海中会想到很多方法,比如判 ...

  3. node-webkit 环境搭建与基础demo

    首先去github上面下载(地址),具体更具自己的系统,我的是windows,这里只给出windows的做法 下载windows x64版本 下载之后解压,得到以下东西 为了方便,我们直接在这个目录中 ...

  4. js学习笔记:webpack基础入门(一)

    之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ...

  5. Golang, 以17个简短代码片段,切底弄懂 channel 基础

    (原创出处为本博客:http://www.cnblogs.com/linguanh/) 前序: 因为打算自己搞个基于Golang的IM服务器,所以复习了下之前一直没怎么使用的协程.管道等高并发编程知识 ...

  6. [C#] C# 基础回顾 - 匿名方法

    C# 基础回顾 - 匿名方法 目录 简介 匿名方法的参数使用范围 委托示例 简介 在 C# 2.0 之前的版本中,我们创建委托的唯一形式 -- 命名方法. 而 C# 2.0 -- 引进了匿名方法,在 ...

  7. HTTPS 互联网世界的安全基础

    近一年公司在努力推进全站的 HTTPS 化,作为负责应用系统的我们,在配合这个趋势的过程中,顺便也就想去搞清楚 HTTP 后面的这个 S 到底是个什么含义?有什么作用?带来了哪些影响?毕竟以前也就只是 ...

  8. Swift与C#的基础语法比较

    背景: 这两天不小心看了一下Swift的基础语法,感觉既然看了,还是写一下笔记,留个痕迹~ 总体而言,感觉Swift是一种前后端多种语言混合的产物~~~ 做为一名.NET阵营人士,少少多多总喜欢通过对 ...

  9. .NetCore MVC中的路由(1)路由配置基础

    .NetCore MVC中的路由(1)路由配置基础 0x00 路由在MVC中起到的作用 前段时间一直忙于别的事情,终于搞定了继续学习.NetCore.这次学习的主题是MVC中的路由.路由是所有MVC框 ...

随机推荐

  1. 为何stop()和suspend()方法不推荐使用(转)

    stop()方法作为一种粗暴的线程终止行为,在线程终止之前没有对其做任何的清除操作,因此具有固有的不安全性. 用Thread.stop()方法来终止线程将会释放该线程对象已经锁定的所有监视器.如果以前 ...

  2. Flask基础(12)-->请求上下文和应用上下文

    请求上下文和应用上下文 请求上下文:可以简单理解为客户端与服务器之间数据交互请求的容器 请求上下文对象有:request.Session request:封装了HTTP请求的内容,针对的是http的请 ...

  3. asp.netcore 自动挡Docker Nginx Redis(滴滴滴,自动挡)

    前言 上一章介绍了Docker通过多条命令创建启动运行Docker容器,由此可见这样一个个去创建单独的容器也是相当麻烦的,比如要在某个复杂项目中用DB.缓存.消息等等,这样我们还要去一个个再创建,为此 ...

  4. Web前端开发的应用和前景——web 1.0到web 3.0

    Web前端开发的应用和前景--web 1.0到web 3.0 Web1.0:(只读时代) 以静态.单向阅读为主,网站内信息可以直接和其他网站信息进行交互,能通过第三方信息平台同时对多家网站信息进行整合 ...

  5. Redis系列---操作命令及数据类型

    本章将简单介绍下,Redis里面常用的数据类型以及我们常用到的一些命令,let's go 准备环境: Redis  详细见上一个章节 我们接下来操作的命令用的是Redis自带的客户端工具,在安装red ...

  6. Go语言基础之net/http

    Go语言基础之net/http 2017年6月26日 Go语言内置的net/http包十分的优秀,提供了HTTP客户端和服务端的实现. net/http介绍 Go语言内置的net/http包提供了HT ...

  7. Spark 学习笔记之 union/intersection/subtract

    union/intersection/subtract: import org.apache.spark.SparkContext import org.apache.spark.rdd.RDD im ...

  8. MongoDB 学习笔记之 索引

    索引: db.media.createIndex({"Tracklist": 1}) 1表示升序 -1表示降序 我们要着重看一下对数组创建索引的情况. 构建一个集合:db.medi ...

  9. python常用算法学习(3)

    1,什么是算法的时间和空间复杂度 算法(Algorithm)是指用来操作数据,解决程序问题的一组方法,对于同一个问题,使用不同的算法,也许最终得到的结果是一样的,但是在过程中消耗的资源和时间却会有很大 ...

  10. Node.js入门教程 第三篇 (模块及路由)

    Node.js的模块 Node.js的模块与传统面向对象的类(class)不完全相同.Node.js认为文件即模块,即一个文件是一个模块.单一文件一般只专注做一件事情,保证了代码的简洁性. 创建模块: ...