在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. ROS-Baxter抓取
  2. DeepKey:科学家提出一种基于脑纹独特性的多模态生物识别系统可以防范身份欺骗...
  3. VTK:PolyData之MaskPoints
  4. 用贝叶斯来看看抛硬币的概率
  5. 基于区域的OSPF简单口令认证(cisco packet tracer5.3)
  6. Brocade 光纤交换机常用命令
  7. Lingo优化模型概述
  8. [收藏]孔庆东-为何要唱样板戏
  9. 【Flink】Flink 部分算子是 FinishSHED 不做checnpoint
  10. 2.5、调用后置处理器
  11. python数组拼接concat_Python xarray.concat然后xarray.to_netcdf生成巨大的新文件大小
  12. java 微信开发图片发送,微信开发?Java上传Base64图片
  13. 网站用户的生命周期价值
  14. java工程师和全栈工程师_java全栈工程师 - 北大青鸟东莞金码学校官网
  15. SHA 加密是什么( sha1 和 MD5 的区别 )
  16. 通过制作一个登录界面学习matlab app designer的基础使用方法
  17. 圣诞小程序服务器,微信圣诞帽2018小程序_微信圣诞帽头像自动换预约_第一手游网...
  18. Spring Boot入门(05):了解Spring Boot的starter入门 | 超级详细,建议收藏
  19. Linux Command sar 网卡流量
  20. javaScript-如何引入js代码

热门文章

  1. springboot 使用idea打包 遇到问题
  2. ubuntu14.04下apt-get install出现E: Sub-process /usr/bin/dpkg returned an error code 解决方法
  3. mongodb之配置
  4. FFMPEG结构体分析:AVCodecContext(转)
  5. 4 weekend110的hdfs下载数据源码跟踪铺垫 + hdfs下载数据源码分析-getFileSystem(值得反复推敲和打断点源码)...
  6. Search Engine —— Regular Expression(Spider)
  7. android 之 Hnadler 、Message 、Looper
  8. .NET中的文件IO操作实例
  9. socket和IOCTL结合实现网络采集
  10. ubuntu下adb offline 的解决办法