Oracle DBMS_SCHEDULER 与 DBMS_JOB 的对比

Oracle DBMS_SCHEDULER 与 DBMS_JOB 的对比

一 基本概述对比

特性DBMS_JOB (旧版)DBMS_SCHEDULER (新版)
引入版本Oracle 7 (1992年)Oracle 10g R1 (2003年)
当前状态已过时但仍支持推荐使用的标准
设计目的基础作业调度企业级作业调度系统

二 功能特性对比

2.1 作业定义能力

  • DBMS_JOB:

    • 仅支持PL/SQL代码片段
    • 无正式作业名称,只有数字ID
    BEGINDBMS_JOB.SUBMIT(job => :jobno,what => 'BEGIN my_proc; END;',next_date => SYSDATE,interval => 'SYSDATE+1');
    END;
    
  • DBMS_SCHEDULER:

    • 支持命名作业
    • 可执行PL/SQL块、存储过程、外部程序等
    • 支持作业链、作业类等高级概念
    BEGINDBMS_SCHEDULER.CREATE_JOB(job_name => 'MY_JOB',job_type => 'PLSQL_BLOCK',job_action => 'BEGIN my_proc; END;',start_date => SYSDATE,repeat_interval => 'FREQ=DAILY',enabled => TRUE);
    END;
    

2.2 调度灵活性

  • DBMS_JOB:

    • 简单日期表达式
    • 仅支持基于日期的间隔
    interval => 'SYSDATE+1/24' -- 每小时执行
    
  • DBMS_SCHEDULER:

    • 使用日历表达式
    • 支持复杂调度规则
    repeat_interval => 'FREQ=HOURLY; BYMINUTE=0,15,30,45'
    

2.3 资源管理

  • DBMS_JOB:

    • 无内置资源控制
    • 无法限制作业资源使用
  • DBMS_SCHEDULER:

    • 支持作业优先级
    • 可分配资源计划
    • 可限制CPU使用等
    DBMS_SCHEDULER.SET_ATTRIBUTE('MY_JOB','max_run_duration',INTERVAL '30' MINUTE
    );
    

三 管理维护对比

3.1 监控能力

  • DBMS_JOB:

    • 有限的视图(DBA_JOBS, DBA_JOBS_RUNNING)
    • 无历史执行记录
  • DBMS_SCHEDULER:

    • 丰富的视图(DBA_SCHEDULER_JOBS等)
    • 完整的执行历史记录
    SELECT * FROM DBA_SCHEDULER_JOB_RUN_DETAILS
    WHERE job_name = 'MY_JOB';
    

3.2 错误处理

  • DBMS_JOB:

    • 简单重试机制
    • 失败16次后自动标记为broken
  • DBMS_SCHEDULER:

    • 可配置重试策略
    • 支持失败通知
    • 可定义失败后的处理程序
    DBMS_SCHEDULER.SET_ATTRIBUTE('MY_JOB','max_failures',5
    );
    

四 性能与扩展性对比

维度DBMS_JOBDBMS_SCHEDULER
并发作业数有限(依赖JOB_QUEUE_PROCESSES)更高性能,更好的扩展性
依赖管理无内置支持支持作业依赖和作业链
多租户支持不明确12c+完整支持PDB/CDB

五 实际应用建议

  1. 新项目开发:一律使用DBMS_SCHEDULER

  2. 旧系统维护

    • 简单作业可保持使用DBMS_JOB
    • 复杂需求应迁移到DBMS_SCHEDULER
  3. 迁移路径

    -- 使用DBMS_SCHEDULER.CREATE_JOB创建新作业
    -- 使用DBMS_JOB.REMOVE逐步淘汰旧作业
    
  4. 混合环境注意事项

    • 两种系统独立运行
    • 共享JOB_QUEUE_PROCESSES参数
    • 监控时需同时检查两种作业

六 典型场景选择指南

  1. 适合DBMS_JOB的场景

    • 简单的定时PL/SQL执行
    • 需要向后兼容的旧系统
    • 轻量级调度需求
  2. 必须使用DBMS_SCHEDULER的场景

    • 需要复杂调度规则
    • 需要执行操作系统命令或程序
    • 需要作业依赖和资源控制
    • 需要详细的作业历史记录
    • 在多租户环境中使用

七 版本兼容性说明

  1. Oracle 10g-11g

    • 两种系统共存
    • 建议开始迁移到DBMS_SCHEDULER
  2. Oracle 12c+

    • DBMS_JOB仍然可用但不推荐
    • DBMS_SCHEDULER功能更丰富
  3. Oracle 19c/21c

    • DBMS_JOB保持兼容性
    • 新功能只加入DBMS_SCHEDULER

更详细的内容请查看官方文档:

https://docs.oracle.com/en/database/oracle/oracle-database/12.2/arpls/DBMS_JOB.html#GUID-8C62D808-D7A3-4D21-B87F-A229B7CE1956

谨记:心存敬畏,行有所止。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/76164.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux网络编程实战:从字节序到UDP协议栈的深度解析与开发指南

网路通信的三大要素:协议,端口和IP 知识点1【字节序】 多字节在主机中的存放数据 把多字节看成一个整体存储的顺序。 为什么我们在文件中没有这个概念呢? 因为文件是字节流(流指针),流是以一个字节为操…

mvccc

. MVCC (多版本并发控制) 概念: MVCC 是一种并发控制技术,用于在数据库中实现并发事务的读写操作,同时保证事务的隔离性。MVCC 的核心思想是,在数据库中维护数据的多个版本,每个事务在读取数据时,读取的是…

Kotlin整数相除精度损失roundToInt

Kotlin整数相除精度损失roundToInt import kotlin.math.roundToIntfun main() {val a 0.0fval delta 0.1ffor (i in 0..10) {val r a i * deltaprintln("float${r} toInt${r.toInt()} (0.5 toInt)${(r 0.5).toInt()} round${Math.round(r)} roundToInt${r.roundToInt…

“星睿O6” AI PC开发套件评测 - Windows on Arm 安装指南和性能测评

引言 Radxa联合此芯科技和安谋科技推出全新的"星睿O6"迷你 ITX 主板。该系统搭载了 CIX P1(CD8180)12 核 Armv9 处理器,拥有高达30T算力的NPU和高性能的GPU,最高配备64GB LPDDR内存,并提供了如 5GbE、HDMI …

redis-事务(MULTI、EXEC、DISCARD、WATCH与lua脚本、包含lua脚本的简单介绍、乐观锁抢购案例的实现)

https://juejin.cn/post/6891158857708797959 首先Redis事务在实际的场景应用上也占着比较重要的地位,例如在秒杀场景中,我们就可以利用Redis事务中的watch命令监听key,实现乐观锁,保证不会出现冲突,也防止商品超卖。 另外就是Redis事务也是面试过程中面试官着重照顾的基础…

Redis-07-常见Redis使用场景

文章目录 01.缓存数据(Cache)02.布式锁(Distributed Lock)03.计数器(Counter)04.排行榜(Leaderboard)05.消息队列(Message Queue)06.限流(Rate Li…

长亭2月公开赛Web-ssrfme

环境部署 拉取环境报错&#xff1a; 可以尝试拉取一下ubuntu:16.04&#xff0c;看是否能拉取成功 将wersion&#xff1a;"3"删掉 我拉去成功之后&#xff0c;再去拉取环境&#xff0c;成功&#xff01; 访问环境 测试ssrf 源码 <?php highlight_file(__file__…

RK3506+net9+VS2022跨平台调试C#程序

下载GetVsDbg.sh &#xff0c;这脚本会下载一个压缩包&#xff0c;然后解压缩&#xff0c;设置x权限等等。但是目标板子连不上&#xff0c;就想办法获取到下载路径&#xff0c;修改这个脚本&#xff0c;显示这个下载链接后&#xff0c;复制一下&#xff0c;用电脑下下来 修改好…

MySQL GTID集合运算函数总结

MySQL GTID 有一些运算函数可以帮助我们在运维工作中提高运维效率。 1 GTID内置函数 MySQL 包含GTID_SUBSET、GTID_SUBTRACT、WAIT_FOR_EXECUTED_GTID_SET、WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS 4个内置函数&#xff0c;用于GTID集合的基本运算。 1.1 GTID_SUBSET(set1,set2) …

Java学习手册:Java内存模型

Java内存模型&#xff08;Java Memory Model&#xff0c;简称JMM&#xff09;是Java语言中用于定义线程之间如何共享和操作内存的规范。它描述了Java程序中变量的内存可见性行为&#xff0c;并定义了线程之间的通信规则。理解Java内存模型对于编写正确的并发程序至关重要。本文…

神经网络优化 - 高维变量的非凸优化

网络优化是指寻找一个神经网络模型来使得经验(或结构)风险最小化的过程&#xff0c;包括模型选择以及参数学习等。 关于经验风险最小化和结构风险最小化&#xff0c;请参考博文&#xff1a; 认识机器学习中的经验风险最小化准则_样本均值近似与经验风险最小化的关系-CSDN博客…

Python自学第2天:条件语句,循环语句

条件语句 1.条件判断 score 60 if score > 90:print("优秀") elif score > 60:print("及格") else:print("不及格") 注意&#xff1a; 1、每个条件后面要使用冒号 :&#xff0c;表示接下来是满足条件后要执行的语句块。2、使用缩进来划…

C# dll 打包进exe

Framework4.x推荐使用 Costura.Fody 1. 安装 NuGet 包 Install-Package Costura.Fody工程自动生成packages文件夹&#xff0c;300M左右。生成FodyWeavers.xml、FodyWeavers.xsd文件。 2. 自动嵌入 编译后&#xff0c;所有依赖的 DLL 会被自动嵌入到 EXE 中。 运行时自动解压…

Redis之缓存更新策略

缓存更新策略 文章目录 缓存更新策略一、策略对比二、常见的缓存更新策略三、如何选择策略四、实际应用示例五、使用 Cache-Aside TTL 的方式&#xff0c;实现缓存商铺信息详情1.引入StringRedisTemplate2.将查询商铺信息加入缓存3.更新商铺信息时移除缓存总结 六、注意事项 一…

【工具变量】各地级市人口集聚及多中心程度数据集(2000-2023年)

多中心程度描述的是一个城市或区域内多个功能性中心的存在和分布情况&#xff1b;人口集聚度是指一定区域内人口的集中程度&#xff0c;它反映了区域内人口分布的不均衡性&#xff0c;这两个概念相互关联&#xff0c;通过分析地级市的多中心程度及人口集聚度可以帮助研究者理解…

函数对象-C++

1.定义 2.特点 、 1.解释第一句 #include<stdio.h> using namespace std; #include<string> #include<map> #include <iostream> class print { public:void operator()(string s){cout << s << endl;} }; int main() {print print;pri…

Apifox下载安装与使用

一、Apifox下载 官网地址:Apifox 点击"免费下载",即可进行下载。 二、Apifox安装 双击安装文件即可安装。

Python与图像处理:从基础操作到智能应用的全面解析

目录 一、Python图像处理的三大核心优势 1.1 生态库矩阵支撑 1.2 开发效率革命 1.3 跨领域协同能力 二、六大核心处理技术详解 2.1 图像基础操作 2.2 图像增强技术 2.3 特征提取算法 2.4 目标检测技术 2.5 图像分割技术 2.6 图像生成技术 三、实战案例&#xff1a;智…

双 Token 与 单 Token 优缺点

双Token与单Token认证机制对比 在Web应用开发中&#xff0c;身份认证和授权是保障系统安全的核心环节。随着技术演进&#xff0c;基于Token的认证机制逐渐取代传统Session方案&#xff0c;而双Token与单Token架构的选型争议也日益成为开发者关注的焦点。本文将从技术原理、优缺…

Spring Boot管理Spring MVC

Spring Boot真正的核心功能是自动配置和快速整合&#xff0c;通常Spring Boot应用的前端MVC框架依然使用Spring MVC。Spring Boot提供的spring-boot-starter-web启动器嵌入了Spring MVC的依赖&#xff0c;并为Spring MVC提供了大量自动配置&#xff0c;可以适用于大多数Web开发…