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桌面并没有提供传统的窗口最小化、最大化按钮。但是可以通过安装和使用特定的工具来调整和自定义这些设置。 可以通过以下步骤来启用窗口的最小化和最大化按钮:…...
【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 的工程࿰…...
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程序时,为了管理内存而划分的几个不同作用域。这些区域各自承担特定的任务,…...
【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绘画工具作为艺术与技术结合的产物,已经逐渐从科幻的概念变成了现实。这些工具不仅改变了传统绘画的创作方式,还为人们带来了全新的艺术体验。本文将详…...
[2025CVPR]DeepVideo-R1:基于难度感知回归GRPO的视频强化微调框架详解
突破视频大语言模型推理瓶颈,在多个视频基准上实现SOTA性能 一、核心问题与创新亮点 1.1 GRPO在视频任务中的两大挑战 安全措施依赖问题 GRPO使用min和clip函数限制策略更新幅度,导致: 梯度抑制:当新旧策略差异过大时梯度消失收敛困难:策略无法充分优化# 传统GRPO的梯…...
sqlserver 根据指定字符 解析拼接字符串
DECLARE LotNo NVARCHAR(50)A,B,C DECLARE xml XML ( SELECT <x> REPLACE(LotNo, ,, </x><x>) </x> ) DECLARE ErrorCode NVARCHAR(50) -- 提取 XML 中的值 SELECT value x.value(., VARCHAR(MAX))…...
【JavaSE】绘图与事件入门学习笔记
-Java绘图坐标体系 坐标体系-介绍 坐标原点位于左上角,以像素为单位。 在Java坐标系中,第一个是x坐标,表示当前位置为水平方向,距离坐标原点x个像素;第二个是y坐标,表示当前位置为垂直方向,距离坐标原点y个像素。 坐标体系-像素 …...
【HarmonyOS 5 开发速记】如何获取用户信息(头像/昵称/手机号)
1.获取 authorizationCode: 2.利用 authorizationCode 获取 accessToken:文档中心 3.获取手机:文档中心 4.获取昵称头像:文档中心 首先创建 request 若要获取手机号,scope必填 phone,permissions 必填 …...
Pinocchio 库详解及其在足式机器人上的应用
Pinocchio 库详解及其在足式机器人上的应用 Pinocchio (Pinocchio is not only a nose) 是一个开源的 C 库,专门用于快速计算机器人模型的正向运动学、逆向运动学、雅可比矩阵、动力学和动力学导数。它主要关注效率和准确性,并提供了一个通用的框架&…...
html css js网页制作成品——HTML+CSS榴莲商城网页设计(4页)附源码
目录 一、👨🎓网站题目 二、✍️网站描述 三、📚网站介绍 四、🌐网站效果 五、🪓 代码实现 🧱HTML 六、🥇 如何让学习不再盲目 七、🎁更多干货 一、👨…...
AGain DB和倍数增益的关系
我在设置一款索尼CMOS芯片时,Again增益0db变化为6DB,画面的变化只有2倍DN的增益,比如10变为20。 这与dB和线性增益的关系以及传感器处理流程有关。以下是具体原因分析: 1. dB与线性增益的换算关系 6dB对应的理论线性增益应为&…...
PAN/FPN
import torch import torch.nn as nn import torch.nn.functional as F import mathclass LowResQueryHighResKVAttention(nn.Module):"""方案 1: 低分辨率特征 (Query) 查询高分辨率特征 (Key, Value).输出分辨率与低分辨率输入相同。"""def __…...
mac 安装homebrew (nvm 及git)
mac 安装nvm 及git 万恶之源 mac 安装这些东西离不开Xcode。及homebrew 一、先说安装git步骤 通用: 方法一:使用 Homebrew 安装 Git(推荐) 步骤如下:打开终端(Terminal.app) 1.安装 Homebrew…...
STM32HAL库USART源代码解析及应用
STM32HAL库USART源代码解析 前言STM32CubeIDE配置串口USART和UART的选择使用模式参数设置GPIO配置DMA配置中断配置硬件流控制使能生成代码解析和使用方法串口初始化__UART_HandleTypeDef结构体浅析HAL库代码实际使用方法使用轮询方式发送使用轮询方式接收使用中断方式发送使用中…...
