当前位置: 首页 > 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绘画工具作为艺术与技术结合的产物,已经逐渐从科幻的概念变成了现实。这些工具不仅改变了传统绘画的创作方式,还为人们带来了全新的艺术体验。本文将详…...

Vue记事本应用实现教程

文章目录 1. 项目介绍2. 开发环境准备3. 设计应用界面4. 创建Vue实例和数据模型5. 实现记事本功能5.1 添加新记事项5.2 删除记事项5.3 清空所有记事 6. 添加样式7. 功能扩展:显示创建时间8. 功能扩展:记事项搜索9. 完整代码10. Vue知识点解析10.1 数据绑…...

Golang 面试经典题:map 的 key 可以是什么类型?哪些不可以?

Golang 面试经典题:map 的 key 可以是什么类型?哪些不可以? 在 Golang 的面试中,map 类型的使用是一个常见的考点,其中对 key 类型的合法性 是一道常被提及的基础却很容易被忽视的问题。本文将带你深入理解 Golang 中…...

关于nvm与node.js

1 安装nvm 安装过程中手动修改 nvm的安装路径, 以及修改 通过nvm安装node后正在使用的node的存放目录【这句话可能难以理解,但接着往下看你就了然了】 2 修改nvm中settings.txt文件配置 nvm安装成功后,通常在该文件中会出现以下配置&…...

HTML 列表、表格、表单

1 列表标签 作用:布局内容排列整齐的区域 列表分类:无序列表、有序列表、定义列表。 例如: 1.1 无序列表 标签:ul 嵌套 li,ul是无序列表,li是列表条目。 注意事项: ul 标签里面只能包裹 li…...

Cloudflare 从 Nginx 到 Pingora:性能、效率与安全的全面升级

在互联网的快速发展中,高性能、高效率和高安全性的网络服务成为了各大互联网基础设施提供商的核心追求。Cloudflare 作为全球领先的互联网安全和基础设施公司,近期做出了一个重大技术决策:弃用长期使用的 Nginx,转而采用其内部开发…...

大学生职业发展与就业创业指导教学评价

这里是引用 作为软工2203/2204班的学生,我们非常感谢您在《大学生职业发展与就业创业指导》课程中的悉心教导。这门课程对我们即将面临实习和就业的工科学生来说至关重要,而您认真负责的教学态度,让课程的每一部分都充满了实用价值。 尤其让我…...

学习STC51单片机32(芯片为STC89C52RCRC)OLED显示屏2

每日一言 今天的每一份坚持,都是在为未来积攒底气。 案例:OLED显示一个A 这边观察到一个点,怎么雪花了就是都是乱七八糟的占满了屏幕。。 解释 : 如果代码里信号切换太快(比如 SDA 刚变,SCL 立刻变&#…...

项目部署到Linux上时遇到的错误(Redis,MySQL,无法正确连接,地址占用问题)

Redis无法正确连接 在运行jar包时出现了这样的错误 查询得知问题核心在于Redis连接失败,具体原因是客户端发送了密码认证请求,但Redis服务器未设置密码 1.为Redis设置密码(匹配客户端配置) 步骤: 1).修…...

企业如何增强终端安全?

在数字化转型加速的今天,企业的业务运行越来越依赖于终端设备。从员工的笔记本电脑、智能手机,到工厂里的物联网设备、智能传感器,这些终端构成了企业与外部世界连接的 “神经末梢”。然而,随着远程办公的常态化和设备接入的爆炸式…...

云原生玩法三问:构建自定义开发环境

云原生玩法三问:构建自定义开发环境 引言 临时运维一个古董项目,无文档,无环境,无交接人,俗称三无。 运行设备的环境老,本地环境版本高,ssh不过去。正好最近对 腾讯出品的云原生 cnb 感兴趣&…...