在Oracle的调度任务概述

在Oracle的调度任务中不仅提供了program,job和schedul三个基本的组件,还提供了很多高级的组件。如

job class:用来将任务与资源计划进行关联,对资源请求相似的JOB可放置在相同JOB CLASS中。

window:表示在某段时间里启动与之关联的job class中的job或schedule,同时将启动的JOB和window中相关的资源计划进行关联

window group:把相关的window组合起来,作为一个组,方便管理和使用。

chain:一系列event_schedule、program和subchain的有机结合。 笔者个人浅见,应用较少

下图为调度任务的总体结构关系

JOB CLASS

job class用于把那些对资源有相似请求的任务组合在一起,他可以与某个资源用户组相关联,从而使得该job class中所有的任务都属于该用户组。那么当这些任务在运行时所能使用的资源,就由该用户组所在的资源计划控制。

创建job class

其中

logging_level选项的意义和job中的意义一样,具体可参见http://czmmiao.iteye.com/blog/1003505

Resource Consumer Group表示与job class的用户组,Service Name表示与job class关联的服务。注意2者对立只能选其一。

Log Retention Period中的设置会覆盖日志保留时间内的全局配置。有关于日志保留时间内的全局配置可参加http://czmmiao.iteye.com/blog/1003505

创建job class的sql如下

BEGIN
sys.dbms_scheduler.create_job_class(
logging_level => DBMS_SCHEDULER.LOGGING_RUNS,
log_history => 20,
resource_consumer_group => 'BATCH_GRP',
comments => 'Job classe for DSS job',
job_class_name => 'DSS_JOB_CLASS');
END;

WINDOW

windo表示明确定义的一段时间,包括起始时间和终止时间。比如,早上6点到下午6点就可以形成一个window,代表工作时间。window的最大作用在于可以同时与任务和资源计划关联,一旦达到指定的时间段就可以启动任务,并激活资源计划。

比如说,晚上需要进行某个DSS相关的任务,这个任务可能从晚上10点持续到早上8点,但是我们系统6点钟就要运行OLTP业务,为了防止DSS任务消耗过多资源。我们需要进行如下操作。

创建两个window,WIN_NIGHT和WIN_DAY。为DSS_JOB建立一个job class,其名称为DSS_CLASS。并将DSS_CLASS与用户组BATCHA_CLASS建立关联。同时将DSS_JOB与WIN_NIGHT建立关联。到了晚上10点钟,WIN_NIGHT打开,激活DSS_JOB启动,并激活资源计划PLAN_NIGHT。这时DSS_JOB以BATCH_GRP用户组的身份运行,所能使用的资源受PLAN_NIGHT控制。白天的时候,WIN_DAY启动,并激活资源计划PLAN_DAY。这时DSS_JOB还没运行完毕,则他能够继续运行。但是所能使用的资源由PLAN_DAY控制。这样就实现了资源的合理利用

如果需要,我们还可以把一组window合并起来,组成一个window group,这样就可以更容易地管理多个window。

创建window

1、创建两个资源计划

2、创建两个window

创建win_night的sql如下

BEGIN
DBMS_SCHEDULER.CREATE_WINDOW(
window_name=>'WIN_NIGHT',
resource_plan=>'PLAN_NIGHT',
start_date=>systimestamp at time zone '+8:00',
duration=>numtodsinterval(480, 'minute'),
repeat_interval=>'FREQ=DAILY;BYHOUR=22;BYMINUTE=0;BYSECOND=0',
end_date=>null,
window_priority=>'LOW',
comments=>'Window for night');
END;

3、创建JOB

关于如何创建JOB可参见

http://czmmiao.iteye.com/blog/1003505

http://czmmiao.iteye.com/blog/1003618

其中Stop on Window Close表示window结束时任务终止,这里我们不要勾选该选项。

创建job的sql如下

BEGIN
sys.dbms_scheduler.create_job(
job_name => '"SYS"."DSS_JOB"',
job_type => 'PLSQL_BLOCK',
job_action => 'declare
   i number;
   j number;
begin
   i:=0;
   loop
      j:=sqrt(i);
      i:=i+1;
    end loop;
end;',
schedule_name => 'SYS.WIN_NIGHT',
job_class => 'DSS_JOB_CLASS',
auto_drop => FALSE,
enabled => FALSE);
sys.dbms_scheduler.set_attribute( name => '"SYS"."DSS_JOB"', attribute => 'stop_on_window_close', value => FALSE);
sys.dbms_scheduler.enable( '"SYS"."DSS_JOB"' );
END;

当window启动时,Oracle并不会校验各个widnow的起始时间和终止时间是否从叠,但是同一个时间点上只能有一个window在运行,这里也就存在矛盾的地方。Oracle采用如下机制解决这个问题。

1、如果准备启动的window的优先级别等于当前正在运行的window的优先级别,则正则运行的window继续运行,准备运行的window必须等到正在运行的window结束才能启动。反之,则停止当前运行的window,启动优先级高的window。

2、如果在当前没有正在运行的window但是同一时间点有多个window需要启动,且优先级相等,则运行时间长的window被启动。

注意,oracle只提供了window两个优先级:Low 、High

创建chain

Oracle任务调度的高级选项相关推荐

  1. 每周一书《Oracle 12 c PL(SQL)程序设计终极指南》

    本周为大家送出的书是<Oracle 12 c PL(SQL)程序设计终极指南>,此书由机械工业出版社出版, 孙风栋,王澜,郭晓惠 著. 内容简介: <Oracle 12c PL/SQ ...

  2. oracle 12c sql图形化,Oracle 12c PL/SQL程序设计终极指南

    Oracle 12c PL/SQL程序设计终极指南 作者:孙风栋;王澜;郭晓惠 出版日期:2015年06月 文件大小:11.73M 支持设备: ¥60.00在线试读 适用客户端: 言商书局 iPad/ ...

  3. commvault 配置mysql_Commvault_Oracle DG恢复到单机操作手册

    Commvault_Oracle DG恢复到单机操作手册 1. 在目标oracle服务器中安装Commvault Oracle代理 新建Linux客户端 安装软件 输入服务器root账户和密码 只选择 ...

  4. 分布式任务调度平台XXL-JOB的Oracle版本搭建与学习笔记

    XXL-JOB是一个轻量级分布式任务调度平台,其核心设计目标是开发迅速.学习简单.轻量级.易扩展. 1.源码下载地址 ①.GitHub:https://github.com/xuxueli/xxl-j ...

  5. oracle 作业调度里pl/sql怎么写,PL/SQL实现Oracle数据库任务调度

    PL/SQL实现Oracle数据库任务调度 PL/SQL实现Oracle数据库任务调度 正在看的ORACLE教程是:PL/SQL实现Oracle数据库任务调度.摘要:本文主要就数据库恢复与系统任务的调 ...

  6. hangfire oracle,.net core 之Hangfire任务调度

    Hangfire可用作任务调度,类似延迟任务.队列任务.批量任务和定时任务等. 一.nuget Hangfire包 找到Hangfire.AspNetCore和Hangfire.SqlServer包, ...

  7. Quartz 实现分布式任务调度

    2019独角兽企业重金招聘Python工程师标准>>> 情景 在开发的时候可能需要用到任务调度,通常我们使用quartz,单独部署一个实例来进行任务调度,然后就会存在单点的风险,qu ...

  8. 一起学微软Power BI系列-使用技巧(1)连接Oracle与Mysql数据库

    说起Oracle数据库,以前没用过Oracle不知道,但是这1年用Oracle后,发现真的是想狂吐槽,特别是那个.NET驱动和链接字符串,特别奇葩.总归是和其他数据库不一样,标新立异,不知道为何.另外 ...

  9. springmvc整合mybatis框架源码 bootstrap html5 mysql oracle maven SSM

    获取[下载地址]   QQ: 313596790 A 调用摄像头拍照,自定义裁剪编辑头像 [新录针对本系统的视频教程,手把手教开发一个模块,快速掌握本系统] B 集成代码生成器 [正反双向](单表.主 ...

最新文章

  1. Cisco 路由器防火墙配置命令及实例
  2. GNSS NMEA ddmm.mmmmm格式转换
  3. Leetcode 130. 被围绕的区域 (每日一题 20210720 同类型题)
  4. 5.8.1 创建类型实例
  5. jQuery_事件学习
  6. 计算机单片机英语书籍推荐,英语翻译近十几年来,单片机作为微计算机一个很重要的分支,应用广泛,发展迅速,已经对人类社会产生了深远的影响.本文介绍了基...
  7. java中,在一个有序数组中插入元素,使得数组保持有序排列
  8. 干掉项目中杂乱的 if-else,试试状态模式,这才是优雅的实现方式!
  9. python的xlwt库的作用_Python:使用第三方库xlwt来写Excel
  10. 程序理解与程序员的未来
  11. Github上的1000多本免费电子书重磅来袭!
  12. PTES 测试执行标准
  13. 沉没成本---欲罢不能的困局?
  14. [Machine Learning]--PMI(Pointwise Mutual Information)
  15. stringexample.java_给出如下声明:String s = “Example”; 合法的代码有哪些?()_学小易找答案...
  16. 智能陈桥输入法软件测试,智能陈桥输入法无法使用.怎么办?
  17. 什么是 URL Schema
  18. MySql无法连接本地地址localhost
  19. wyAPP苹果APP 营销
  20. 在java中如何输入角度_在Java中获取角度的反余弦

热门文章

  1. tcp_nodelay memcached java_TCP_NODELAY 和 TCP_NOPUSH
  2. 怎么像编辑提供wb原图_PLoS One:7月1日起,投稿必须提供原始WB图片!
  3. python的进程模块
  4. 机器学习:SVM、软间隔、随机梯度下降SVM线性算法
  5. Win10系统的SurfacePro4如何重装系统-3 重装完成之后的系统优化
  6. Android 第三方库RxLifecycle使用
  7. WLAN高密无线网络部署的信道问题
  8. [译]开始学习webpack
  9. deLPHI书籍名称
  10. vim为何打开文件乱码,而且之后setenc还是乱码?附带实用vimrc一份