`

Oracle(三)之任务调度

 
阅读更多

Oracle任务调度概述 

Oracle中任务调度指某一执行程序在特定的时间被周期性的执行Oracle把任务调度称为job。而一个基本的job由两方面组成programschedule。其中program指周期性执行的可执行程序,其中可包括PL\SQL匿名块,存储过程、函数、包以及操作系统的可执行脚本和外部程序等等。schedule指的是,调度program执行的周期。该周期既可以基于特定时间被调度,也可以基于某一事件被调度。因而JOB总体上可分为两大类,基于时间的JOB和基于事件的JOB。在Oracle 10g之前,采用dbms_job程序包来完成任务调度的相关工作。在Oracle 10g之后,Oracle推出了功能更加强大的dbms_schedule来完成任务调度工作,主要是由于dbms_schedule能够基于事件进行任务调度而dbms_job无法基于事件进行调度(笔者个人浅见,待验证)! 基于时间的JOB 创建Program截图 

Administration->Programs->Create

BEGIN 

DBMS_SCHEDULER.CREATE_PROGRAM( 

program_name=>'HR.INSERT_SYSDATE', program_action=>'begin 

insert into hr.job_test values(sysdate); commit; end', 

program_type=>'PLSQL_BLOCK', number_of_arguments=>0, 

comments=>'insert sysdate into table', enabled=>TRUE); END;

其中program类型里有3个选项分别代表 

PLSQL_BLOCK:表示该程序为可执行的PL\SQL匿名块 STORED_PORCEDURE:表示程序为存储过程、函数或程序包 EXECUTABLE:表示程序为位于操作系统上的可执行脚本或程序

Repeating部分,我们指定启动的频率,在指定启动频率时应采用日历表达式。起格式由3部分组成:频率、间隔、特定时间点。每隔2天:FREQ=DAYLYINTERVAL=2 每隔30妙:FREQ=SECONDLY;INTERVAL=30 每周的第一天:FREQ=WEEKLY;BYMONTHDAY=1 每月的最后一天:FREQ=MONTHLY;BYMONTHDAY=-1

创建Schedule截图 

Administration->Schedules->Create 

创建ScheduleSQL如下 

BEGIN 

sys.dbms_scheduler.create_schedule( 

repeat_interval => 'FREQ=MINUTELY;INTERVAL=5', start_date => systimestamp at time zone '+8:00', comments => 'Start Every 5 minutes', schedule_name => '"HR"."INSERT_SCHE"'); END;

 

其中Schedule Type中可选择Schedule的类型

Standard:为标准的Schedule类型,需要用户自行定义Schedule的时间

Use Pre-defined Schedule:使用之前定义过的Schedule

Standard Using PL\SQL for repeated interval:使用PL\SQL编写Schedule的时间

Use Pre-defined Window:使用之前定义的Window

Event:使用基于时间的Schedule

JOB里的Options选项

<!--[if gte vml 1]><v:shapetype id="_x0000_t75" coordsize="21600,21600" o:spt="75" o:preferrelative="t" path="m@4@5l@4@11@9@11@9@5xe" filled="f" stroked="f"> <v:stroke joinstyle="miter"/> <v:formulas> <v:f eqn="if lineDrawn pixelLineWidth 0"/> <v:f eqn="sum @0 1 0"/> <v:f eqn="sum 0 0 @1"/> <v:f eqn="prod @2 1 2"/> <v:f eqn="prod @3 21600 pixelWidth"/> <v:f eqn="prod @3 21600 pixelHeight"/> <v:f eqn="sum @0 0 1"/> <v:f eqn="prod @6 1 2"/> <v:f eqn="prod @7 21600 pixelWidth"/> <v:f eqn="sum @8 21600 0"/> <v:f eqn="prod @7 21600 pixelHeight"/> <v:f eqn="sum @10 21600 0"/> </v:formulas> <v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"/> <o:lock v:ext="edit" aspectratio="t"/> </v:shapetype><v:shape id="Picture_x0020_1" o:spid="_x0000_i1025" type="#_x0000_t75" alt="http://img181.poco.cn/mypoco/myphoto/20110414/21/5616035720110414211905010.jpg" style='width:525.75pt;height:148.5pt;visibility:visible;mso-wrap-style:square'> <v:imagedata src="file:///C:\Users\lidao\AppData\Local\Temp\msohtmlclip1\01\clip_image001.jpg" o:title="5616035720110414211905010"/> </v:shape><![endif]--><!--[if !vml]-->http://img181.poco.cn/mypoco/myphoto/20110414/21/5616035720110414211905010.jpg<!--[endif]-->

 

Priority:在相同的JOB CLASS中分配资源的等级。

Schedule Limit(minutes):计划执行的任务如果在计划时间内没有被执行则在Schedule Limit规定的时间内重新执行。该选项只对重复执行的任务有效。

Maximum Runs:任务执行成功次数达到Maximum Runs指定的次数后任务则不再执行

Maximum Failures:持续执行的任务可失败的最大次数,达到Maximum Failures指定的值后该任务自动失效

Job Weight:JOB所支持的最大并行查询

Instance Stickiness:应用在RAC环境中。如果设置为TRUE,那么该JOB将在负载最轻的实例上运行。如果设置为FLASE,将在第一个有效的节点上运行嗯该JOB

 

创建JOBSQL如下 

BEGIN 

sys.dbms_scheduler.create_job( job_name => '"HR"."INSERT_JOB"', 

program_name => 'HR.INSERT_SYSDATE', schedule_name => 'HR.INSERT_SCHE', job_class => 'DEFAULT_JOB_CLASS', 

comments => 'insert sysdate into table', auto_drop => FALSE, enabled => FALSE); 

sys.dbms_scheduler.set_attribute( name => '"HR"."INSERT_JOB"', 

attribute => 'schedule_limit', value => numtodsinterval(1, 'minute')); 

sys.dbms_scheduler.set_attribute( name => '"HR"."INSERT_JOB"', attribute => 'job_priority', value => 2); 

sys.dbms_scheduler.set_attribute( name => '"HR"."INSERT_JOB"', attribute => 'max_runs', value => 10); 

sys.dbms_scheduler.set_attribute( name => '"HR"."INSERT_JOB"', attribute => 'max_failures', value => 3); 

sys.dbms_scheduler.set_attribute( name => '"HR"."INSERT_JOB"', attribute => 'job_weight', value => 4); 

sys.dbms_scheduler.set_attribute( name => '"HR"."INSERT_JOB"', attribute => 'instance_stickiness', value => TRUE);

 

END;

分享到:
评论

相关推荐

    PL/SQL 创建 oracle 任务调度

    Oracle任务调度是数据库管理系统中的一个重要特性,它允许管理员设置定期执行的任务,比如数据备份、清理、统计信息收集等。在PL/SQL环境中,有两种主要的方法来创建Oracle任务调度:可视化创建和通过代码创建。 **...

    分布式任务调度平台XXL-JOB(Oracle版)

    这里分享自己已经跑起来的Oracle版本分布式任务调度平台XXL-JOB资源。 官方只有Mysql版本的DEMO,由于近期单位项目需要,将原来DEMO稍作修改后改成了oracle版本,主要修改工作包括修改配置文件,数据库连接方式,pom...

    oracle调度任务的书写格式

    总结,Oracle Jobs提供了强大的任务调度能力,通过理解和熟练掌握调度任务的书写格式,你可以有效地管理数据库的自动化任务,确保系统的稳定运行和数据的健康维护。在实际应用中,应根据业务需求灵活调整任务的执行...

    ORACLE定时任务不能自动执行的检查修复步聚

    Oracle 定时任务不能自动执行的检查修复步聚 Oracle 定时任务是 Oracle 数据库中的一种功能,可以根据设置的计划执行某些任务。但是,在某些情况下,Oracle 定时任务可能不能自动执行。这可能是由于某个版本的 BUG...

    Oracle 10g的任务调度.pdf

    Oracle 10g数据库中的任务调度是数据库管理中的一个重要功能,它允许数据库管理员(DBA)安排和自动执行数据库中的任务。在Oracle 10g版本中,任务调度功能得到了加强,引入了DBMS_SCHEDULER包,它提供了一系列用于...

    oracle执行调度百度

    Oracle数据库允许用户在特定时间或间隔执行任务,如数据备份、统计信息收集、清理过期记录等。这种调度功能对于维护数据库的稳定性和性能至关重要。 【描述】中的"从百度上荡下来的"可能是指从网络上下载的相关资料...

    使用PL/SQL Developer图形界面轻松实现oracle定期计划任务

    在Oracle数据库管理中,定期执行任务是不可或缺的一部分,这通常涉及到数据库维护、数据清理、备份等操作。PL/SQL Developer是一款强大的Oracle开发工具,它提供了一个直观的图形用户界面(GUI),使得设置定期计划...

    利用Quartz实现任务调度的集群

    【Quartz任务调度集群】是Java开发中解决定时任务需求的一种高效方案,它由OpenSymphony团队开发,自2001年以来广泛应用于各种项目。Quartz的核心优势在于其灵活性和简单性,允许开发者自由定义任务触发的时间表,...

    任务调度Quartz框 架

    【Quartz任务调度框架】 Quartz是一个开源的任务调度框架,非常适合初学者入门。它为Java开发者提供了一种高效且可控的方式来实现定时任务的调度。在各种企业应用中,任务调度的需求非常常见,例如定期清理系统垃圾...

    PL/SQL实现Oracle数据库任务调度

    正在看的ORACLE教程是:PL/SQL实现Oracle数据库任务调度。摘要:本文主要就数据库恢复与系统任务的调度,在结合一般性的数据库后台处理的经验上,提出较为实用而新颖的解决方法,拓宽了数据库后台开发的思路。 关键词...

    关于oracle计划任务设置的实例.rar

    在Oracle中,计划任务(也称为调度程序)是一项重要的管理功能,允许管理员安排数据库操作在特定时间自动执行,例如数据备份、统计信息收集、表空间的自动扩展等。本教程将通过实例深入探讨如何在Oracle中设置计划...

    Java Oracle JOBS 自动调度

    本话题将聚焦于“Java Oracle JOBS 自动调度”,这是一个关于如何使用Java编程语言与Oracle数据库相结合来实现自动任务调度的知识点。在企业系统中,自动调度功能对于定期执行诸如数据备份、报表生成、系统维护等...

    oracle的定时任务

    `DBMS_JOB`是Oracle提供的用于任务调度的核心包,包含多种过程用于任务的提交、修改、删除等操作。具体包括: - `SUBMIT`: 提交一个新的任务。 - `REMOVE`: 删除一个已存在的任务。 - `CHANGE`: 更改任务的执行参数...

    Oracle案例详细分析:Job任务停止执行

    本文通过一次Oracle Job任务异常案例诊断,分析其原因及解决过程,从内部揭示Oracle Job任务调度及内部计时机制。以下是关于Oracle Job任务的知识点: 1. Oracle Job任务的概念:Oracle Job任务是指在数据库中执行...

    oracle定时任务

    Oracle定时任务,也被称为Oracle数据库的调度作业,是Oracle数据库管理系统提供的一种功能,允许用户预定义一系列操作,如运行SQL脚本、数据备份或数据清理等,并设定在特定时间自动执行。这种机制对于自动化数据库...

    quartznet任务调度和消息调度

    Quartz.NET是一个强大的开源任务调度框架,用于在.NET环境中实现定时或周期性任务的执行。它为开发者提供了灵活且可扩展的解决方案,以满足各种定时任务需求。标题和描述中提到的知识点主要围绕以下几个方面: 1. *...

    oracle调度程序

    自Oracle 11g版本起,Oracle引入了全新的Scheduler特性,这一特性极大地提升了任务调度的灵活性和效率。通过使用Scheduler,用户不仅可以实现对数据库内作业的自动化管理,还能够根据需求定制复杂的任务执行流程,并...

    oracle 定时任务

    Oracle定时任务,也被称为Oracle调度(Oracle Scheduler),是Oracle数据库系统中的一个重要组件,用于安排数据库内的作业自动执行。这些作业可以包括数据备份、清理过期记录、运行统计分析等日常维护任务。Oracle ...

    Java使用quartz实现任务调度定时任务

    Java中的任务调度是软件开发中一个重要的组成部分,它允许开发者安排任务在特定时间执行,而无需手动干预。在Java世界里,Quartz是一个强大的、完全开源的作业调度框架,广泛用于构建复杂的时间触发任务。本篇文章将...

Global site tag (gtag.js) - Google Analytics