百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术教程 > 正文

一文看懂dbms_schedule定时任务的来龙去脉

mhr18 2024-10-10 06:34 21 浏览 0 评论

概述

关于Oracle定时任务管理一般有两个方式,前面已经介绍了DBMS_JOB这种方式,今天主要介绍下另外一种管理方式:DBMS_SCHEDULE。


DBMS_SCHEDULE

Oracle 10g之前,可以使用dbms_job来管理定时任务。10g之后,Oracle引入dbms_scheduler来替代先前的dbms_job,

在功能方面,它比dbms_job提供了更强大的功能和更灵活的机制/管理。

使用dbms_scheduler创建一个定时任务有两种形式

1)创建1个SCHEDULER来定义计划

1个PROGRAM来定义任务内容,再创建1个JOB,为这个JOB指定上面的SCHEDULER和PROGRAM。

2)直接创建JOB,在参数里面直接指定计划和任务内容。

要执行DBMS_SCHEDULER需要有CREATE JOB权限。

如果要创建外部操作系统命令的job, 还必须有CREATE EXTERNAL JOB权限。

如果要对于某个对象进行操作,必须是它的owner,或者对它具有alter权限,或者有create any job权限。

如果要创建/操作job_class,还需要有MANAGE SCHEDULER权限。job_class都是创建在sys schema中的。


参数说明

1)schedule_name,program_name,job_name

这些名字在整个sql名字空间内必须唯一。比如,job_name不能和某个表名相同。

2)repeat_interval

定义job的计划,可以指定的形式相当丰富,也相当灵活,很强大。

举几个例子

a) 05/02 和 09/22 的 8:00 a.m., 1:00 p.m., 6:00 p.m.

'freq=daily;byhour=8,13,18;byminute=0;bysecond=0;bydate=0502,0922'

b) 每个月的最后一个工作日(注意,INTERVAL如果不指定,默认为1)

'FREQ=MONTHLY;BYDAY=MON,TUE,WED,THU,FRI;BYSETPOS=-1'

c) 1/10开始的5天,即1/10~1/14

BYDATE=0110+SPAN:5D

+表示从指定日期开始;-表示到指定日期结束;

^表示围绕指定日期的n天,如果n为偶数,调整为n+1。

d) 以下三种表示方法等同

BYDATE=0205-OFFSET:2W
BYDATE=0205-14D (the OFFSET: keyword is optional)
BYDATE=0122

3)start_date

实际上是schedule生效的日期,

对于一个定时执行的schedule,实际上的开始日期取决于repeat_interval参数。

如果start_date为null,等同于job被enable的时刻。

Oracle取start_date来作为repeat_interval的default值。

4)end_date

这个时间之后,job将不再被执行。

5)program_type/program_action/number_of_arguments/job_type/job_action

program_type有三种形式,program_action是一个PL/SQL block,不支持参数,number_of_arguments必须为0,必须以分号结尾。

program_action是一个存储过程,注意不支持INOUT or OUT参数,也不支持function.

参数最多255个,可以通过SET_JOB_ARGUMENT_VALUE过程来设定。

job_type类似于program_type,只是多了'CHAIN'这种类型来创建任务链。

6) enabled

如果为TRUE, 创建时候检查program/job有效性,如果通过检查把program/job置为ENABLED.

在program/job使用前必须通过ENABLE过程把它置为ENABLED。

如果program为disabled,仅仅enable一个job,那么job会按计划执行,但是会失败。

7)auto_drop

如果为TRUE, 在job完成之后或者被自动disabled之后job将被自动删除。

如果满足以下条件,job被视为完成。

a) 过了end_date。

b) 达到了最大运行次数(max_runs,可以通过SET_ATTRIBUTE来指定)

c) 非重复任务,即只运行一次的任务,并且已经运行了1次。

如果满足以下条件,job被视为自动disabled.

a) 达到了最大运行失败次数(max_failures,可以通过SET_ATTRIBUTE来指定)

相关数据字典

1) dba_scheduler_jobs/user_scheduler_jobs
Enabling 一个 disabled 状态的job会重设本视图中的RUN_COUNT, FAILURE_COUNT and RETRY_COUNT.
2) dba_scheduler_programs/user_scheduler_programs
3) dba_scheduler_schedules/user_scheduler_schedules
4) dba_scheduler_job_log/dba_scheduler_job_run_details
5) dba_scheduler_job_classes
6) 默认情况下,数据库自身定义了一个PURGE_JOB的任务。

该任务每天凌晨3点钟启动,清除30天前所产生的任务日志。


这块还是需要重点掌握的,概念东西做个理解就行,后面会再整理了下涉及的一些命令,感兴趣的朋友可以关注一下~

相关推荐

SQL入门知识篇(sql入门新手教程视频)

一、什么是数据库?什么是SQL?1、数据库:存放数据,可以很多人一起使用2、关系数据库:多张表+各表之间的关系3、一张表需要包含列、列名、行4、主键:一列(或一组列),其值能够唯一区分表中的每个行。5...

postgresql实现跨库查询-dblink的妙用

技术导语:用惯了oracle的dblink,转战postgresql,会一时摸不着头脑。本期就重点详细讲解postgresql如何安装dblink模块及如何使用dblink实现跨库查询。安装cont...

Oracle VM VirtualBox虚拟机软件(oracle vm virtualbox win10)

OracleVMVirtualBox是一款完全免费的虚拟机软件,下载银行有提供下载,软件支持安装windows、linux等多个操作系统,让用户可以在一台设备上实现多个操作系统的操作。同时软件有着...

开源 SPL 轻松应对 T+0(开源srs)

T+0问题T+0查询是指实时数据查询,数据查询统计时将涉及到最新产生的数据。在数据量不大时,T+0很容易完成,直接基于生产数据库查询就可以了。但是,当数据量积累到一定程度时,在生产库中进行大数据...

中小企业佳选正睿ZI1TS4-4536服务器评测

随着科技的不断发展,各行各业对于数据使用越加频繁,同时针对服务器的选择方面也就越来越多样化和细分化。那么对于我们用户来说,如何选择符合自身业务需求和最优性价比的产品呢?笔者将通过刚刚购买的这台服务器的...

MFC转QT:Qt基础知识(mfc和qt的区别)

1.Qt框架概述Qt的历史和版本Qt是一个跨平台的C++应用程序开发框架,由挪威公司Trolltech(现为QtCompany)于1991年创建。Qt的发展历程:1991年:Qt项目启动1995年...

数据库,QSqlTableModel(数据库有哪些)

QMYSQL——mysqlQSQLITE——sqliteQOICQ——orcale所需头文件.pro增加sql#include<QSqlDatabase>#include<Q...

python通过oledb连接dbf数据库(python连接jdbc)

起因:因为工作需要,需要读取dbf文件和系统数据中数据进行校对,因为知道dbf文件可以用sql查询,所以想能不能像mysql/oracle那样连接,再调用执行sql方法,通过一系列百度,尝试,最终通过...

Excel常用技能分享与探讨(5-宏与VBA简介 VBA与数据库)

在VBA(VisualBasicforApplications)中使用数据库(如Access、SQLServer、MySQL等)具有以下优点,适用于需要高效数据管理和复杂业务逻辑的场景:1....

Excel常用技能分享与探讨(5-宏与VBA简介 VBA与数据库-二)

以下是常见数据库软件的详细配置步骤,涵盖安装、驱动配置、服务启动及基本设置,确保VBA能够顺利连接:一、MicrosoftAccess适用场景:小型本地数据库,无需独立服务。配置步骤:安装Acces...

Windows Docker 安装(docker安装windows容器)

Docker并非是一个通用的容器工具,它依赖于已存在并运行的Linux内核环境。Docker实质上是在已经运行的Linux下制造了一个隔离的文件环境,因此它执行的效率几乎等同于所部署的L...

Windows下安装Ubuntu虚拟机方法(windows下安装ubuntu20)

在Windows下安装Ubuntu虚拟机。选择使OracleVMVirtualBox安装Ubuntu虚拟机。1.下载和安装OracleVMVirtualBox:访问OracleVMVir...

java入门教程1 - 安装和配置(win和linux)

windows安装和配置安装javahttps://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html目前大部分项目的...

Centos7 安装Tomcat8服务及配置jdk1.8教程

1、下载jdk1.8压缩包下载地址:https://www.oracle.com/java/technologies/javase/javase8-archive-downloads.htmltom...

全网最完整的免费java教程讲义(一)——java配置和安装

一,安装Java1)安装JDK要学习和使用java,首先需要安装JDK(JavaDevelopemntKit),相当于java安装包。Java的下载页在甲骨文官网上:https://www.or...

取消回复欢迎 发表评论: