当前位置: 首页 > news >正文

Oracle作业调度器Job Scheduler

Oracle数据库调度器 (Oracle Database Scheduler)

  • 在数据库管理系统中,数据库调度器负责调度和执行数据库中的存储过程、触发器、事件等。
  • 它可以确保这些操作在正确的时间和条件下得到执行,以满足业务需求。

1、授权用户权限

-- 创建目录对象 tmp_dir 
CREATE OR REPLACE DIRECTORY tmp_dir AS '/tmp';
-- 授予用户权限
GRANT READ,WRITE ON DIRECTORY tmp_dir TO hr;
GRANT CREATE JOB TO hr;
GRANT CREATE EXTERNAL JOB TO hr;

2、创建一个测试表

创建一个测试表 t_job_oggdata

conn hr/hr@orclCREATE TABLE t_job_oggdata
(  scheduler_ID NUMBER CONSTRAINT PK_t_job_oggdata_ID PRIMARY KEY,Infoment VARCHAR2(50),sysguid VARCHAR(50) DEFAULT sys_guid(), createDT DATE DEFAULT SYSDATE,CONSTRAINT UQ_uniqueKeyguid UNIQUE(sysguid)
);

3、创建序列SEQUENCE及存储过程PROCEDURE

创建序列SEQUENCE SEQ_t_job_oggdataID 及存储过程PROCEDURE P_TestSchedulerJobs

-- 创建序列SEQUENCE SEQ_t_job_oggdataID
CREATE SEQUENCE SEQ_t_job_oggdataID MINVALUE 1 MAXVALUE 999999999999 START WITH  1 CYCLE NOCACHE;-- 创建存储过程PROCEDURE  P_TestSchedulerJobs
CREATE OR REPLACE PROCEDURE P_TestSchedulerJobs
AS
BEGININSERT INTO t_job_oggdata(scheduler_ID,Infoment) VALUES (SEQ_t_job_oggdataID.nextval,SEQ_t_job_oggdataID.currval||'_scheduler_jobs_ID ');COMMIT;
END P_TestSchedulerJobs;
/

4、创建一个 SCHEDULER Job(创建 JOb 默认不运行)

创建一个 SCHEDULER Job,时间间隔为每分钟执行一次

BEGINDBMS_SCHEDULER.CREATE_JOB(JOB_NAME        => 'AddSchedulerJobs',JOB_TYPE        => 'stored_procedure',JOB_ACTION      => 'P_TestSchedulerJobs',START_DATE      => SYSDATE,REPEAT_INTERVAL => 'FREQ=MINUTELY;INTERVAL=1');
END;
/

5、查询 scheduler JOB

-- sys用户查
select * from dba_scheduler_jobs where owner=UPPER('sys') AND job_name=UPPER('AddSchedulerJobs');-- hr用户查
select * from user_scheduler_jobs where job_name=UPPER('AddSchedulerJobs');select * from t_job_oggdata;

6、使用 scheduler 管理 JOB

6.1、启动 JOB

begindbms_scheduler.enable('AddSchedulerJobs');
end;
/PL/SQL procedure successfully completed.-- hr用户下查user_scheduler_jobs 
HR@ORCL> col JOB_NAME format a30
HR@ORCL> select JOB_NAME,ENABLED from user_scheduler_jobs where job_name=UPPER('AddSchedulerJobs');JOB_NAME                       ENABLED
------------------------------ ---------------
ADDSCHEDULERJOBS               TRUE-- sys用户下查dba_scheduler_jobs 
select JOB_NAME,ENABLED from dba_scheduler_jobs where owner=UPPER('hr') AND job_name=UPPER('AddSchedulerJobs');HR@ORCL> col INFOMENT format a30
HR@ORCL> col SYSGUID format a36
HR@ORCL> select * from t_job_oggdata;SCHEDULER_ID INFOMENT                       SYSGUID                              CREATEDT
------------ ------------------------------ ------------------------------------ -------------------1 1_scheduler_jobs_ID            1A0D38A2BDFCD321E063E650A8C0EE7F     2024-06-04 16:27:322 2_scheduler_jobs_ID            1A0D38A2BDFDD321E063E650A8C0EE7F     2024-06-04 16:28:323 3_scheduler_jobs_ID            1A0D3FCA1BDCD323E063E650A8C00246     2024-06-04 16:29:324 4_scheduler_jobs_ID            1A0D38A2BDFED321E063E650A8C0EE7F     2024-06-04 16:30:32

查看启动时间和下次执行时间

--  sys as sysdba 
select JOB_NAME,ENABLED,to_char(START_DATE,'yyyy-mm-dd hh24:mi:ss') as start_date,to_char(NEXT_RUN_DATE,'yyyy-mm-dd hh24:mi:ss') as next_run_date
from dba_scheduler_jobs where owner=UPPER('hr') AND job_name=UPPER('AddSchedulerJobs');-- OR schema hr
select JOB_NAME,ENABLED,to_char(START_DATE,'yyyy-mm-dd hh24:mi:ss') as start_date,to_char(NEXT_RUN_DATE,'yyyy-mm-dd hh24:mi:ss') as next_run_date
from user_scheduler_jobs where job_name=UPPER('AddSchedulerJobs');

查看执行的详细信息


HR@ORCL> col LOG_DATE format a30
HR@ORCL> col STATUS format a10
HR@ORCL> col ACTUAL_START_DATE format a30
HR@ORCL> col ADDITIONAL_INFO format a50
HR@ORCL> col RUN_DURATION format a30
HR@ORCL> select owner,job_name,to_char(log_date,'yyyy-mm-dd hh24:mi:ss') as log_date,status,RUN_DURATION,to_char(ACTUAL_START_DATE,'yyyy-mm-dd hh24:mi:ss') as actual_start_date,ADDITIONAL_INFOfrom user_scheduler_job_run_details;OWNER                          JOB_NAME                       LOG_DATE                       STATUS     RUN_DURATION                   ACTUAL_START_DATE              ADDITIONAL_INFO
------------------------------ ------------------------------ ------------------------------ ---------- ------------------------------ ------------------------------ --------------------------------------------------
TESTUSER                       ADDSCHEDULERJOBS               2024-06-04 16:27:32            SUCCEEDED  +000 00:00:00                  2024-06-04 16:27:32
TESTUSER                       ADDSCHEDULERJOBS               2024-06-04 16:28:32            SUCCEEDED  +000 00:00:00                  2024-06-04 16:28:32
TESTUSER                       ADDSCHEDULERJOBS               2024-06-04 16:30:32            SUCCEEDED  +000 00:00:00                  2024-06-04 16:30:32
TESTUSER                       ADDSCHEDULERJOBS               2024-06-04 16:31:32            SUCCEEDED  +000 00:00:00                  2024-06-04 16:31:32
TESTUSER                       ADDSCHEDULERJOBS               2024-06-04 16:32:32            SUCCEEDED  +000 00:00:00                  2024-06-04 16:32:32
TESTUSER                       ADDSCHEDULERJOBS               2024-06-04 16:33:32            SUCCEEDED  +000 00:00:00                  2024-06-04 16:33:32
TESTUSER                       ADDSCHEDULERJOBS               2024-06-04 16:29:32            SUCCEEDED  +000 00:00:00                  2024-06-04 16:29:32
TESTUSER                       ADDSCHEDULERJOBS               2024-06-04 16:36:48            SUCCEEDED  +000 00:00:00                  2024-06-04 16:36:488 rows selected.

6.2、禁用 JOB

begindbms_scheduler.disable('AddSchedulerJobs');
end;
/PL/SQL procedure successfully completed.

6.3、执行 JOB

-- 查询测试表中的数据
HR@ORCL> select * from t_job_oggdata;SCHEDULER_ID INFOMENT                       SYSGUID                              CREATEDT
------------ ------------------------------ ------------------------------------ -------------------1 1_scheduler_jobs_ID            1A0D38A2BDFCD321E063E650A8C0EE7F     2024-06-04 16:27:322 2_scheduler_jobs_ID            1A0D38A2BDFDD321E063E650A8C0EE7F     2024-06-04 16:28:323 3_scheduler_jobs_ID            1A0D3FCA1BDCD323E063E650A8C00246     2024-06-04 16:29:324 4_scheduler_jobs_ID            1A0D38A2BDFED321E063E650A8C0EE7F     2024-06-04 16:30:325 5_scheduler_jobs_ID            1A0D38A2BDFFD321E063E650A8C0EE7F     2024-06-04 16:31:326 6_scheduler_jobs_ID            1A0D38A2BE00D321E063E650A8C0EE7F     2024-06-04 16:32:327 7_scheduler_jobs_ID            1A0D38A2BE01D321E063E650A8C0EE7F     2024-06-04 16:33:327 rows selected.-- 执行 JOB
BEGINDBMS_SCHEDULER.RUN_JOB('AddSchedulerJobs');
END;
/PL/SQL procedure successfully completed.-- 查询测试表中的数据
HR@ORCL> select * from test_scheduler_job;SCHEDULER_ID INFOMENT                       SYSGUID                              CREATEDT
------------ ------------------------------ ------------------------------------ -------------------1 1_scheduler_jobs_ID            1A0D38A2BDFCD321E063E650A8C0EE7F     2024-06-04 16:27:322 2_scheduler_jobs_ID            1A0D38A2BDFDD321E063E650A8C0EE7F     2024-06-04 16:28:323 3_scheduler_jobs_ID            1A0D3FCA1BDCD323E063E650A8C00246     2024-06-04 16:29:324 4_scheduler_jobs_ID            1A0D38A2BDFED321E063E650A8C0EE7F     2024-06-04 16:30:325 5_scheduler_jobs_ID            1A0D38A2BDFFD321E063E650A8C0EE7F     2024-06-04 16:31:326 6_scheduler_jobs_ID            1A0D38A2BE00D321E063E650A8C0EE7F     2024-06-04 16:32:327 7_scheduler_jobs_ID            1A0D38A2BE01D321E063E650A8C0EE7F     2024-06-04 16:33:328 8_scheduler_jobs_ID            1A0D1928BA26D2ACE063E650A8C04D90     2024-06-04 16:36:488 rows selected.

在许多应用程序和系统中,开发人员可能会根据特定需求创建自定义的调度器来管理和调度任务。这些自定义调度器可以根据应用程序的特定逻辑和规则来选择自动或手动执行。

6.4、删除 JOB

BEGINDBMS_SCHEDULER.DROP_JOB('AddSchedulerJobs');
END;
/

再次查询user_scheduler_jobs ,发现已经没有这个 scheduler jobs

HR@ORCL> select JOB_NAME,ENABLED from user_scheduler_jobs where job_name=UPPER('AddSchedulerJobs');no rows selected

7、JOB 的时间使用总结

7.1、关于 job 运行时间 计算方法:

select TRUNC(sysdate) + 1 +2/(24) from dual;

7.2、每分钟执行

Interval => TRUNC(sysdate,'mi') + 1/(24*60)

7.3、每天定时执行

每天的凌晨 1 点执行

Interval => TRUNC(sysdate) + 1 +1/(24)

每天的凌晨 2 点执行

Interval => TRUNC(sysdate) + 1 +2/(24)

当前时间间隔2 天

Interval => TRUNC(sysdate) + 2 +1/(24)

7.4、每周定时执行

例如:每周一凌晨 1 点执行

Interval => TRUNC(next_day(sysdate,'Mon'))+1/24

7.5、每月定时执行

例如:每月 1 日凌晨 1 点执行

Interval =>TRUNC(LAST_DAY(SYSDATE))+1+1/24

7.6、每季度定时执行

例如每季度的第一天凌晨 1 点执行

Interval => TRUNC(ADD_MONTHS(SYSDATE,3),'Q') + 1/24

7.7、每半年定时执行

例如:每年 7 月 1 日和 1 月 1 日凌晨 1 点

Interval => TRUNC(ADD_MONTHS(SYSDATE,3),'Q') + 1/24Interval => TRUNC(SYSDATE, 'YEAR')  + 1/24

相关文章:

Oracle作业调度器Job Scheduler

Oracle数据库调度器 (Oracle Database Scheduler) 在数据库管理系统中,数据库调度器负责调度和执行数据库中的存储过程、触发器、事件等。它可以确保这些操作在正确的时间和条件下得到执行,以满足业务需求。 1、授权用户权限 -- 创建目录对象 tmp_dir…...

Vue 组件之间的通信

在 Vue.js 中,组件是构建应用程序的基本单位。然而,当你的应用程序变得复杂时,组件之间的通信变得至关重要。本文将介绍几种 Vue 组件之间通信的方式,帮助你更好地管理和组织代码。 父子组件通信 父组件可以通过 props 向子组件传…...

Elementary OS 7.1简单桌面调整

Elementary OS的Pantheon桌面环境提供了一种非常独特和直观的用户体验。默认情况下,Pantheon桌面并没有提供传统的窗口最小化、最大化按钮。但是可以通过安装和使用特定的工具来调整和自定义这些设置。 可以通过以下步骤来启用窗口的最小化和最大化按钮&#xff1a…...

【C++ | 析构函数】类的析构函数详解

😁博客主页😁:🚀https://blog.csdn.net/wkd_007🚀 🤑博客内容🤑:🍭嵌入式开发、Linux、C语言、C、数据结构、音视频🍭 ⏰发布时间⏰:2024-06-06 1…...

ceph radosgw 原有zone placement信息丢失数据恢复

概述 近期遇到一个故障环境,因为某些原因,导致集群原有zone、zonegroup等信息丢失(osd,pool等状态均健康)。原有桶和数据无法访问,经过一些列fix后修复, 记录过程 恢复realm和pool相关信息 重…...

​​​​【动手学深度学习】残差网络(ResNet)的研究详情

目录 🌊1. 研究目的 🌊2. 研究准备 🌊3. 研究内容 🌍3.1 残差网络 🌍3.2 练习 🌊4. 研究体会 🌊1. 研究目的 了解残差网络(ResNet)的原理和架构;探究残…...

freertos初体验 - 在stm32上移植

1. 说明 freertos内核 非常精简,代码量也很少,官方也针对主流的编译器和内核准备好了移植文件,所以 freertos 的移植是非常简单的,很多工具(例如CubeMX)点点鼠标就可以生成一个 freertos 的工程&#xff0…...

ubuntu使用 .deb 文件安装VScode

使用 .deb 文件安装 下载 VSCode 的 .deb 文件: wget -q https://go.microsoft.com/fwlink/?LinkID760868 -O vscode.deb使用 dpkg 安装: sudo dpkg -i vscode.deb如果有依赖项问题,使用以下命令修复: sudo apt-get install -f...

9.1.1 简述目标检测领域中的单阶段模型和两阶段模型的性能差异及其原因

9.1目标检测 场景描述 目标检测(Object Detection)任务是计算机视觉中极为重要的基础问题,也是解决实例分割(Instance Segmentation)、场景理解(Scene Understanding)、目标跟踪(Ob…...

系统化自学Python的实用指南

目录 一、理解Python与设定目标 二、搭建学习环境与基础准备 三、入门学习阶段 四、中级进阶阶段 五、项目实践与持续深化 六、持续学习与拓展 一、理解Python与设定目标 Python概述:详细介绍Python的历史沿革、设计理念、主要特点(如易读、易维护…...

加密货币初创企业指南:如何寻找代币与市场的契合点

撰文:Mark Beylin,Boost VC 编译:Yangz,Techub News 原文来源:香港Web3媒体Techub News 在 Y Combinator 创始人 Paul Graham 《Be Good》一文中概述了初创企业如何找到产品与市场契合点的方法,即制造人…...

【十二】图解mybatis日志模块之设计模式

图解mybatis日志模块之设计模式 概述 最近经常在思考研发工程师初、中、高级工程师以及系统架构师各个级别的工程师有什么区别,随着年龄增加我们的技术级别也在提升,但是很多人到了高级别反而更加忧虑,因为it行业35岁年龄是个坎这是行业里的共…...

RainBond 制作应用并上架【以ElasticSearch为例】

文章目录 安装 ElasticSearch 集群第 1 步:添加组件第 2 步:查看组件第 3 步:访问组件制作 ElasticSearch 组件准备工作ElasticSearch 集群原理尝试 Helm 安装 ES 集群RainBond 制作 ES 思路源代码Dockerfiledocker-entrypoint.shelasticsearch.yml制作组件第 1 步:添加组件…...

JVM相关:Java内存区域

Java 虚拟机(JVM)在执行 Java 程序的过程中会把它管理的内存划分成若干个不同的数据区域。 Java运行时数据区域是指Java虚拟机(JVM)在执行Java程序时,为了管理内存而划分的几个不同作用域。这些区域各自承担特定的任务&#xff0c…...

【C++】─篇文章带你熟练掌握 map 与 set 的使用

目录 一、关联式容器二、键值对三、pair3.1 pair的常用接口说明3.1.1 [无参构造函数](https://legacy.cplusplus.com/reference/utility/pair/pair/)3.1.2 [有参构造函数 / 拷贝构造函数](https://legacy.cplusplus.com/reference/utility/pair/pair/)3.1.3 [有参构造函数](htt…...

Mintegral数据洞察:全球中轻度游戏市场与创意更新频率

基于2024年3月大盘数据,汇量科技数据研究中心发现,超休闲品类仍是投流中轻度手游的中流砥柱。而投流力度较大的其他细分品类里,可以看到棋牌、模拟经营、非4X策略以及合成X游戏的身影,这些品类是近年来经常出现融合玩法的新兴赛道…...

贝锐蒲公英异地组网:降低建筑工地远程视频监控成本、简化运维

中联建设集团股份有限公司是一家建筑行业的施工单位,专注于建筑施工,业务涉及市政公用工程施工总承包、水利水电工程施工总承包、公路工程施工总承包、城市园林绿化专业承包等,在全国各地开展有多个建筑项目,并且项目时间周期可能…...

大模型训练学习笔记

目录 大模型的结构主要分为三种 大模型分布式训练方法主要包括以下几种: token Token是构成句子的基本单元 1. 词级别的分词 2. 字符级别的分词 结巴分词 GPT-3/4训练流程 更细致的教程,含公式推理 大模型的结构主要分为三种 Encoder-only(自编…...

Linux C/C++时间操作

C11提供了操作时间的库chrono库,从语言级别提供了支持chrono库屏蔽了时间操作的很多细节,简化了时间操作 Unix操作系统根据计算机产生的年代把1970年1月1日作为UNIX的纪元时间,1970年1月1日是时间的中间点,将从1970年1月1日起经过…...

AI绘画工具

AI绘画工具:技术与艺术的完美融合 一、引言 随着人工智能技术的飞速发展,AI绘画工具作为艺术与技术结合的产物,已经逐渐从科幻的概念变成了现实。这些工具不仅改变了传统绘画的创作方式,还为人们带来了全新的艺术体验。本文将详…...

【Axure高保真原型】引导弹窗

今天和大家中分享引导弹窗的原型模板,载入页面后,会显示引导弹窗,适用于引导用户使用页面,点击完成后,会显示下一个引导弹窗,直至最后一个引导弹窗完成后进入首页。具体效果可以点击下方视频观看或打开下方…...

龙虎榜——20250610

上证指数放量收阴线,个股多数下跌,盘中受消息影响大幅波动。 深证指数放量收阴线形成顶分型,指数短线有调整的需求,大概需要一两天。 2025年6月10日龙虎榜行业方向分析 1. 金融科技 代表标的:御银股份、雄帝科技 驱动…...

【根据当天日期输出明天的日期(需对闰年做判定)。】2022-5-15

缘由根据当天日期输出明天的日期(需对闰年做判定)。日期类型结构体如下: struct data{ int year; int month; int day;};-编程语言-CSDN问答 struct mdata{ int year; int month; int day; }mdata; int 天数(int year, int month) {switch (month){case 1: case 3:…...

Cursor实现用excel数据填充word模版的方法

cursor主页:https://www.cursor.com/ 任务目标:把excel格式的数据里的单元格,按照某一个固定模版填充到word中 文章目录 注意事项逐步生成程序1. 确定格式2. 调试程序 注意事项 直接给一个excel文件和最终呈现的word文件的示例,…...

调用支付宝接口响应40004 SYSTEM_ERROR问题排查

在对接支付宝API的时候,遇到了一些问题,记录一下排查过程。 Body:{"datadigital_fincloud_generalsaas_face_certify_initialize_response":{"msg":"Business Failed","code":"40004","sub_msg…...

应用升级/灾备测试时使用guarantee 闪回点迅速回退

1.场景 应用要升级,当升级失败时,数据库回退到升级前. 要测试系统,测试完成后,数据库要回退到测试前。 相对于RMAN恢复需要很长时间, 数据库闪回只需要几分钟。 2.技术实现 数据库设置 2个db_recovery参数 创建guarantee闪回点,不需要开启数据库闪回。…...

如何将联系人从 iPhone 转移到 Android

从 iPhone 换到 Android 手机时,你可能需要保留重要的数据,例如通讯录。好在,将通讯录从 iPhone 转移到 Android 手机非常简单,你可以从本文中学习 6 种可靠的方法,确保随时保持连接,不错过任何信息。 第 1…...

OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别

OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别 直接训练提示词嵌入向量的核心区别 您提到的代码: prompt_embedding = initial_embedding.clone().requires_grad_(True) optimizer = torch.optim.Adam([prompt_embedding...

基于matlab策略迭代和值迭代法的动态规划

经典的基于策略迭代和值迭代法的动态规划matlab代码,实现机器人的最优运输 Dynamic-Programming-master/Environment.pdf , 104724 Dynamic-Programming-master/README.md , 506 Dynamic-Programming-master/generalizedPolicyIteration.m , 1970 Dynamic-Programm…...

安全突围:重塑内生安全体系:齐向东在2025年BCS大会的演讲

文章目录 前言第一部分:体系力量是突围之钥第一重困境是体系思想落地不畅。第二重困境是大小体系融合瓶颈。第三重困境是“小体系”运营梗阻。 第二部分:体系矛盾是突围之障一是数据孤岛的障碍。二是投入不足的障碍。三是新旧兼容难的障碍。 第三部分&am…...