对于DBA来说,数据库Job再熟悉不过了,因为经常要数据库定时的自动执行一些脚本,或做数据库备份,或做数据的提炼,或做数据库的性能优化,包括重建索引等等的工作。但是,Oracle定时器Job时间的处理上,千变万化,今天我把比较常用写法汇总如下:
在总结之前,先把Job的参数一一说明一下
1.创建job 创建完job后名字显示的是jobno 可用于启动和删除job

declare

job_OpAutoDta pls_integer;
begin
  sys.dbms_job.submit(job =>job_OpAutoDta,  --job参数是由Submit()过程返回的binary_ineger。这个值用来唯一标识一个工作

what => 'wsbs_job_produce_test;',   --what参数是将被执行的PL/SQL代码块,这里过程要带分号 ;

next_date => to_date('04-08-2018 00:01:00', 'dd-mm-yyyy hh24:mi:ss'),--next_date参数指识何时将运行这个工作。写Job的时候可以不指定该值,不指定值的时候创建job会立即执行

interval => 'sysdate+1'); --interval参数何时这个工作将被重执行,其中Interval这个值是决定Job何时,被重新执行的关键

commit;

end;

2.运行job

begin
   dbms_job.run(job_OpAutoDta);--job
end;

3.查询job

--查询所有的job 查询到的job的id 可用来删除job

select * from dba_jobs

--查询正在运行的job

select * from dba_jobs_running

4.删除job

begin
  dbms_job.remove(jobno);  --jobno即查询出来的job id
  commit;
end;

5.常用的日期Interval

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

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

6每半年定时执行 如:每年7月1日和1月1日凌晨2点

Interval => ADD_MONTHS(trunc(sysdate,'yyyy'),6)+2/24

6.

  • 8、相关的几个JOB操作
  •  
    删除job:dbms_job.remove(jobno);
  •  
    修改要执行的操作:job:dbms_job.what(jobno,what);
  •  
    修改下次执行时间:dbms_job.next_date(job,next_date);
  •  
    修改间隔时间:dbms_job.interval(job,interval);
  •  
    停止job:dbms.broken(job,broken,nextdate);
  •  
    启动job:dbms_job.run(jobno);
     
    7

    1,查询正在运行的Job,通过查询有两个,和进程占用较多的是两个ORACLE进程符合。
    SQL> SELECT SID,JOB FROM DBA_JOBS_RUNNING;
    SID JOB
    ---------- ----------
    12 116
    16 117
    2,查询正在运行的job的信息
    SQL> SELECT SID,SERIAL# FROM V$SESSION WHERE SID='12';
    SID SERIAL#
    ---------- ----------
    12 4
    SQL> SELECT SID,SERIAL# FROM V$SESSION WHERE SID='16';
    SID SERIAL#
    ---------- ----------
    16 1
    3,利用查询出来的job信息将job结束掉
    SQL> ALTER SYSTEM KILL SESSION '12,4';
    System altered.
    SQL> ALTER SYSTEM KILL SESSION '16,1';
    System altered.
    4,如果不希望运行上述job的话,可以将job设置为broken.
    EXEC DBMS_JOB.BROKEN(116,TRUE);
    EXEC DBMS_JOB.BROKEN(117,TRUE);



 

oracle定时器job的使用的更多相关文章

  1. oracle定时器在项目中的应用

    业务需求: 现在业务人员提出了一个需求: 在项目中的工作流,都要有一个流程编号,此编号有一定的规则: 前四五位是流程的字母缩写,中间是8位的日期,后面五位是流水码,要求流水码每天从00001开始.即: ...

  2. oracle 定时器调用存储过程

    转载请说明出处:http://t22011787.iteye.com/blog/1112745 一.查询系统中的job,可以查询视图 --相关视图 select * from dba_jobs; se ...

  3. oracle定时器,调用存储过程,定时从n张表中取值新增到本地一张表中

    --创建新增本地数据库的存储过程create or replaceprocedure pro_electric_record as  begin    insert into electric_met ...

  4. Oracle定时器调用存储过程

    1. 创建表 create table job_table(run_time date); 2. 创建存储过程 create or replace procedure job_proc is begi ...

  5. Oracle 定时器

    我的代码 declare job number; begin dbms_job.submit( JOB=>job, what=>'addBytime;',// 这里要写分号,不然容易出错. ...

  6. oracle定时器

    /* 每10秒钟执行一次 插入一条时间 */ -- 创建table create table tab_time( current_time timestamp ); -- 创建存储过程 create ...

  7. Oracle定时器执行多线程

    what里面加下面代码强制执行多线程   begin  execute immediate 'alter session force parallel dml parallel 16';  pkg_s ...

  8. oracle定时器执行一遍就不执行或本就不执行

    转:http://blog.csdn.net/qq_23311211/article/details/76283689 以sqlplus/ assysdba进入sql命令模式,使用sql:select ...

  9. oracle中job定时器任务

    对于DBA来说,经常要数据库定时的自动执行一些脚本,或做数据库备份,或做数据的提炼,或做数据库的性能优化,包括重建索引等等的工作.但是,Oracle定时器Job时间的处理上,千变万化,今天我把比较常用 ...

随机推荐

  1. javascript中五种基本数据类型

    前言: JavaScript中有五种基本数据类型(也叫做简单数据类型)分别为:undefined.null.bolean.number.string:另外还含有一种复杂的数据类型:object. 深入 ...

  2. HTML和CSS的精华

    今天又是周一喽,我们开始啦又一周的学习啦,想一想,在这里学习已经一个月啦,不知什么时间已经习惯啦这种生活,我应该是一个很难适应环境的人啊,但是现在在这里感觉还可以哦,可能是来到这里有自己的目标吧,所以 ...

  3. 【BZOJ3932】[CQOI2015]任务查询系统 主席树

    [BZOJ3932][CQOI2015]任务查询系统 Description 最近实验室正在为其管理的超级计算机编制一套任务管理系统,而你被安排完成其中的查询部分.超级计算机中的 任务用三元组(Si, ...

  4. 神兽保佑-代码无BUG

    ┏┓ ┏┓┏┛┻━━━┛┻┓┃ ┃ ┃ ━ ┃┃ ┳┛ ┗┳ ┃┃ ┃┃ ┻ ┃┃ ┃┗━┓ ┏━┛ ┃ ┃   神兽保佑 ┃ ┃   代码无BUG!       ┃ ┗━━━┓       ┃ ┣┓ ...

  5. git add -A和git add . 的区别

    git add -A和 git add . git add -u在功能上看似很相近,但还是有所差别. git add . :他会监控工作区的状态树,使用它会把工作时的所有变化提交到暂存区,包括文件内容 ...

  6. JavaMVC框架之SpringMVC

    欢迎查看Java开发之上帝之眼系列教程,如果您正在为Java后端庞大的体系所困扰,如果您正在为各种繁出不穷的技术和各种框架所迷茫,那么本系列文章将带您窥探Java庞大的体系.本系列教程希望您能站在上帝 ...

  7. windows dos 常用命令行

    有关某个命令的详细信息,请键入 HELP 命令名 dir (directory) :列出当前目录下的文件以及文件夹 md (make directory): 创建目录 rd (remove direc ...

  8. 170725、Kafka原理与技术

    本文转载自:http://www.linkedkeeper.com/detail/blog.action?bid=1016 Kafka的基本介绍 Kafka最初由Linkedin公司开发,是一个分布式 ...

  9. 170519、FastDFS分布式文件系统的安装与使用(单节点)

    基于 于 D Do ubbo 的分布 式系统架构 视频 教程 高 级篇S FastDFS 分布 式 文件系统的安装与使用 (单 节点)跟踪 服务器 : 192.168.4.12 21 1 (edu- ...

  10. poj2376 Cleaning Shifts【线段树】【DP】

    Cleaning Shifts Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 32561   Accepted: 7972 ...