图文深入理解Oracle DB Scheduler

server/2024/10/11 0:26:30/

值此国庆佳节,深宅家中,闲来无事,就多写几篇博文。今天继续宅继续写。本篇图文深入介绍Oracle DB Scheduler。

Oracle为什么要使Scheduler?

答案就是6个字:简化管理任务。
在这里插入图片描述
• Scheduler(调度程序)可以在任何 SQL 环境中通过 DBMS_SCHEDULER 包或通过
企业管理器(EM)来执行。(如:执行以下各类任务)
• Jobs(作业)可以基于时间或事件启动执行,当作业状态变更时,Scheduler 能够生
成相应的事件。
• 可以使用一系列 Programs(程序)组合完成一个任务。

Scheduler的核心组件

在这里插入图片描述

在这里插入图片描述
Scheduler 的基本组件:
• Job(作业):指定需要执行的任务内容。可以使用 PL / SQL procedure(过程)、本地的二进制可执行文件、Java应用程序或 shell 脚本。用户可以设定执行的程序(what)和调度(when)作为作业定义的一部分,或者使用现有的程序或调度。 也可以使用作业的参数来自定制其运行时行为。
• Schedule(调度/计划):指定 job 执行的时间和次数。Schedule 可以基于时间或事件。用户可以通过设置一系列的日期、事件、或两者的组合,以及用于表示重复间隔的附加说明来为作业定义计划。 可以设置一个 Schedule,然后用于多个 Job 。
• Program(程序):可以做为多个 Job 的公用操作。通过 Program 可以为 Job预定义相同的可执行过程(procedure)、或外部命令(executable)、以及附带的运行参数(argument)。当 Job 的内容需要修改时,只需更改Program 的设计即可,无需逐个修改所有相关的 Job。

Job 的两个强制性组件设置:
• What:表示需要执行的动作,在 command 区域和属性参数 job_type和 job_action 中设置。
• When:表示执行上述动作的时间或调度计划,在 schedule 中设置,可以是基于时间、或事件、或者其他 job 的输出结果。

创建Scheduler的流程

可以在 Oracle Enterprise Manager 的图形环境中、或者在命令行使用DBMS_SCHEDULER PL/SQL 程序包执行以下操作,使用调度程序来简化管理任务:

  1. 创建 program(程序)- 可选操作
    • 可使多个 job 作业中可重复使用此 program 的操作
    • 可更改 job 作业的调度,而无需重新创建其中的 PL/SQL 块
  2. 创建并使用 schedule(调度)
  3. 创建并提交 job(作业)

注意事项

  1. Program(程序)
    • 使用调度程序时,Program 程序是一个可选的设置。
    • 可使用 CREATE_PROGRAM 过程来创建程序。
    • 通过单独创建程序,可以定义一次操作,然后在多个作业中重用此操作。
    • 使用这种方法,您无须重新创建 PL/SQL 块即可更改作业的调度。
    • 默认情况下,程序是以禁用(Disabled)状态创建的。必须将 enabled 的参数值指定为TRUE 才能使用程序。
  2. Schedule(调度)
    • Job 作业的调度可以是预设的调度(可用 CREATE_SCHEDULE 过程创建),也可以是在创建 Job 作业时设定。
    • Schedule 指定 Job 作业运行的时间属性,例如:起始时间、结束时间、重复执行的时间间隔、或者使用其它预设调度的组合、或者需要满足特定的状态事件等等
    • 通过使用 Schedule 调度(而不是在 Job 作业定义中指定作业的执行次数),可以统一管理多个作业的执行计划安排,而无须更新多个作业的定义。
  3. Job(作业)
    • Job 作业是一个组合,其中可包括调度、要执行的操作、以及所需的附加参数。
    • 可以设置作业的相关属性,控制作业的执行方式。

持久轻量作业(Persistent Lightweight Jobs)

BEGIN
DBMS_SCHEDULER.CREATE_JOB (
job_name => 'my_lightweight_job2'
,
program_name => 'MY_PROG'
,
schedule_name => 'MY_SCHED'
,
job_style => 'LIGHTWEIGHT');
END;

什么是轻量作业(Lightweight Jobs),轻量作业有以下特点:
• 减少启动作业所需的开销和时间
• 作业元数据和运行时数据在磁盘上占用很小的空间
• 必须使用作业模板(在命令行中)创建的
• 适用于在一秒内创建数百个作业。对于常规作业,每个作业都要创建一个数据库对象,用于描述作业、修改多个表以及在进程中生成 redo 记录。启动常规作业的开销是很大的,轻量作业的目的是减少启动作业所需的开销和时间。只为作业创建极少的元数据,以减少启动作业时所需的时间和 redo 记录。
• 作业的元数据以及运行时的数据,在磁盘上占用很小的空间,可在 RAC 环境中实现负载平衡。
• 必须使用作业模板创建。作业模板是一个存储过程或一个程序。存储过程可以保存作业所需的所有信息,包括权限。其中只能设置少量的作业属性,如:作业参数和调度等。
• 只能在命令行中创建,JOB_STYLE 参数在 EM 中不可用。

选择合适的作业类型:

– 常规作业:可提供最大的灵活性。
– 轻量作业:可在很短的时间内创建大量作业。

限于篇幅,本篇未完待续。

码字不易,宝贵经验分享不易,请各位支持原创,转载注明出处,多多关注作者,后续不定期分享DB基本知识和排障案例及经验、性能调优等。


http://www.ppmy.cn/server/129865.html

相关文章

Leetcode 10. 正则表达式匹配

1.题目基本信息 1.1.题目描述 给你一个字符串 s 和一个字符规律 p,请你来实现一个支持 ‘.’ 和 ‘*’ 的正则表达式匹配。 ‘.’ 匹配任意单个字符‘*’ 匹配零个或多个前面的那一个元素 所谓匹配,是要涵盖 整个 字符串 s 的,而不是部分…

ElementUI 2.x 输入框回车后在调用接口进行远程搜索功能

输入框回车后在调用接口进行远程搜索功能 主要思路 默认的远程搜索会在输入框聚焦的时候就展示下拉弹窗&#xff0c;而我们需要的是在回车之后才展示下拉弹窗。 具体代码 <divv-for"(domain, index) in formData.domains"class"dynamic-input":key&…

【笔记】微分方程

一、微分方程的基本概念: 定义: 微分方程是一个包含未知函数及其一个或多个导数的方程。 阶: 微分方程的阶是指方程中出现的最高阶导数。 线性与非线性: 如果未知函数及其导数都是一次方的,则称为线性微分方程;否则为非线性微分方程。 常微分方程(ODE)与偏微分方程(PDE): 常…

k8s 中存储之 PV 持久卷 与 PVC 持久卷申请

目录 1 PV 与 PVC 介绍 1.1 PersistentVolume&#xff08;持久卷&#xff0c;简称PV&#xff09; 1.2 PersistentVolumeClaim&#xff08;持久卷声明&#xff0c;简称PVC&#xff09; 1.3 使用了PV和PVC之后&#xff0c;工作可以得到进一步的细分&#xff1a; 2 持久卷实验配置…

VAS1800Q奇力科技线性芯片电荷泵热处理

高效恒流LED驱动器——VAS1800Q在汽车应用中的卓越表现 VAS1800Q是一款专为汽车应用设计的高效恒流LED驱动器。它具备多个显著特点&#xff0c;不仅提升了LED驱动效率&#xff0c;还大大减少了热量的产生&#xff0c;使其在汽车照明领域中具有极高的应用价值。本文将详细介绍VA…

QT学习笔记3.1(建立项目、执行_建立第一个工程)

QT学习笔记3.1&#xff08;建立项目、执行_建立第一个工程) 建立第一个工程&#xff0c;使用widget模板 使用的版本是 Qt Creator 4.11.0 Based on Qt 5.14.0 (MSVC 2017, 32 bit) 1.选择Application-》QT Widget Application&#xff08;最常使用&#xff09; 2.项目保存位…

计算机前沿技术-人工智能算法-大语言模型-最新研究进展-2024-10-03

计算机前沿技术-人工智能算法-大语言模型-最新研究进展-2024-10-03 目录 文章目录 计算机前沿技术-人工智能算法-大语言模型-最新研究进展-2024-10-03目录1. A Scalable Data-Driven Framework for Systematic Analysis of SEC 10-K Filings Using Large Language Models摘要研…

5G NR coreset 简介

文章目录 5G 为何引入CORESETCORESET介绍CORESET 分类 5G 为何引入CORESET 在LTE系统中&#xff0c;PDCCH频域占据整个带宽&#xff0c;始于占据每个RB的前1~3个OFDM 符号&#xff0c;这种情况下&#xff0c;UE 只需知道PDCCH 所占据的OFDM 符号数&#xff0c;就可以确定PDCCH…