oracle Job 定时任务

目录

介绍:

优点:

缺点:

使用场景:

--查看定时任务          

--查询存储过程

案例:

--创建一个名为t_oracle_job的表

在创建定时任务时,各个参数的含义如下:

1. `job_name`:

2. `job_type`:

3. `job_action`:

4. `start_date`:

5. `repeat_interval`:

6. `enabled`:

--每1分钟插入一条数据

创建定时任务执行结果

一分钟执行结果:

--修改定时任务3分钟执行一次

--三分钟执行结果

--暂定定时任务

--启动定时任务

--删除定时任务

--创建一个存储过程 `INSERT_JOB_PROC`,用于向 `T_ORACLE_JOB` 表中插入数据:

--创建一个定时任务,每分钟执行一次上述存储过程:

--创建定时任务INSERT_JOB_TASK执行结果

--定时任务执行存储过程执行结果

--删除存储过程


介绍:


- Oracle Job是Oracle数据库自带的任务调度器,可以在数据库中创建和管理定时任务。
- 它基于PL/SQL语言,允许用户编写存储过程或函数作为任务,并在指定的时间点或时间间隔内自动执行。
- Oracle Job提供了灵活的调度选项,可以设置任务的执行频率、时间点、重复次数等。

优点:


- 可靠性高:Oracle Job是在数据库内部运行的,可以保证任务的可靠性和稳定性。
- 灵活的调度选项:可以根据需求设置任务的执行频率和时间点,满足不同的业务需求。
- 高度可定制化:可以编写复杂的PL/SQL代码作为任务,实现更复杂的业务逻辑。
- 集成性强:Oracle Job与Oracle数据库紧密集成,可以方便地与其他数据库对象进行交互。

缺点:


- 学习成本较高:使用Oracle Job需要掌握PL/SQL语言和相关的调度语法,对于初学者来说可能需要一定的学习成本。
- 依赖于数据库:Oracle Job是依赖于数据库的,如果数据库出现故障或维护,可能会影响任务的执行。
- 缺乏跨平台支持:Oracle Job主要适用于Oracle数据库,对于其他数据库系统可能需要使用不同的调度工具。

使用场景:


- 数据清洗和转换:可以使用Oracle Job定时执行数据清洗和转换任务,保持数据的一致性和准确性。
- 数据备份和恢复:可以使用Oracle Job定时执行数据库备份任务,确保数据的安全性和可恢复性。
- 数据统计和报表生成:可以使用Oracle Job定时执行数据统计和报表生成任务,提供实时的业务数据分析和决策支持。
- 系统维护和优化:可以使用Oracle Job定时执行系统维护和优化任务,如索引重建、统计信息收集等,提高数据库性能和稳定性。

可以满足各种数据库任务的自动化需求,但需要根据具体情况权衡其优缺点并选择合适的使用场景。

--查看定时任务          

--ENABLED=FALSE禁用暂定 ENABLED=TRUE启动

select T.ENABLED,T.STATE,T.* from user_scheduler_jobs T;

--查询存储过程

SELECT *
FROM user_source
WHERE type = 'PROCEDURE'
AND name = 'INSERT_JOB_PROC';--存储过程名称

案例:


--创建一个名为t_oracle_job的表


-- job_name:任务名称
-- job_type:任务类型
-- job_status:任务状态
-- create_time:任务创建时间

CREATE TABLE t_oracle_job (
  job_name    VARCHAR2(100),
  job_type    VARCHAR2(50),
  job_status  VARCHAR2(20),
  create_time DATE
);

在创建定时任务时,各个参数的含义如下:
1. `job_name`:

定时任务的名称,用于唯一标识该任务。


2. `job_type`:

定时任务的类型,指定为 `'PLSQL_BLOCK'` 表示使用 PL/SQL 块作为任务的执行代码。


3. `job_action`:

定时任务的执行代码,可以是一个 PL/SQL 块或一个存储过程的调用。


4. `start_date`:

定时任务的开始时间,指定为 `SYSDATE` 表示使用当前系统时间作为开始时间。


5. `repeat_interval`:

定时任务的重复间隔,指定任务执行的频率和间隔。例如 `'FREQ=MINUTELY; INTERVAL=1'` 表示每隔 1 分钟执行一次任务。


6. `enabled`:

指定定时任务是否启用,`TRUE` 表示启用,`FALSE` 表示禁用。


在 Oracle 数据库中,`job_type` 列用于表示定时任务的类型。以下是一些常见的 `job_type` 类型及其含义:

1. `PLSQL_BLOCK`:表示定时任务是一个 PL/SQL 块。可以在该块中编写自定义的 PL/SQL 代码逻辑,用于执行特定的任务。

2. `STORED_PROCEDURE`:表示定时任务是一个存储过程。可以指定要执行的存储过程名称,定时任务将会调用该存储过程来执行任务。

3. `EXECUTABLE`:表示定时任务是一个可执行文件。可以指定要执行的可执行文件的路径和参数,定时任务将会运行该可执行文件。

4. `CHAIN`:表示定时任务是一个任务链。任务链是一系列相互关联的任务,可以按照指定的顺序依次执行。

5. `SQL_SCRIPT`:表示定时任务是一个 SQL 脚本。可以指定要执行的 SQL 脚本文件的路径,定时任务将会运行该脚本。

这些不同的 `job_type` 类型可以用于不同的场景。例如,`PLSQL_BLOCK` 和 `STORED_PROCEDURE` 可以用于执行自定义的数据库逻辑,`EXECUTABLE` 可以用于执行外部的可执行文件,`CHAIN` 可以用于定义复杂的任务流程,`SQL_SCRIPT` 可以用于执行预定义的 SQL 脚本。


--每1分钟插入一条数据
BEGIN
  DBMS_SCHEDULER.CREATE_JOB (
    job_name        => 'INSERT_JOB',
    job_type        => 'PLSQL_BLOCK',
    job_action      => 'BEGIN INSERT INTO t_oracle_job (job_name, job_type, job_status, create_time) VALUES (''Insert Job'', ''Insert'', ''Pending'', SYSDATE); END;',
    start_date      => SYSDATE,
    repeat_interval => 'FREQ=MINUTELY; INTERVAL=1',
    enabled         => TRUE
  );
END;
创建定时任务执行结果
一分钟执行结果:

--修改定时任务3分钟执行一次
BEGIN
  DBMS_SCHEDULER.SET_ATTRIBUTE('INSERT_JOB', 'repeat_interval', 'FREQ=MINUTELY; INTERVAL=3');
END;
--三分钟执行结果

--暂定定时任务
BEGIN
  DBMS_SCHEDULER.DISABLE('INSERT_JOB');
END;
--启动定时任务
BEGIN
  DBMS_SCHEDULER.ENABLE('INSERT_JOB');
END;
--删除定时任务
BEGIN
  DBMS_SCHEDULER.DROP_JOB('INSERT_JOB');
END;
--创建一个存储过程 `INSERT_JOB_PROC`,用于向 `T_ORACLE_JOB` 表中插入数据:
CREATE OR REPLACE PROCEDURE INSERT_JOB_PROC AS
BEGIN
  INSERT INTO T_ORACLE_JOB (JOB_NAME, JOB_TYPE, JOB_STATUS, CREATE_TIME)
  VALUES ('PROCEDURE Insert Job', 'Insert', 'Pending', SYSDATE);
  COMMIT;
END;
--创建一个定时任务,每分钟执行一次上述存储过程:
BEGIN
  DBMS_SCHEDULER.CREATE_JOB (
    job_name        => 'INSERT_JOB_TASK',
    job_type        => 'PLSQL_BLOCK',
    job_action      => 'BEGIN INSERT_JOB_PROC; END;',
    start_date      => SYSDATE,
    repeat_interval => 'FREQ=MINUTELY; INTERVAL=1',
    enabled         => TRUE
  );
END;
--创建定时任务INSERT_JOB_TASK执行结果
--定时任务执行存储过程执行结果

--删除存储过程
DROP PROCEDURE INSERT_JOB_PROC;

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

day02-报表技术POI

1、基于模板导出列表数据 1.1、需求 按照以下样式导出excel 1.2、思路 首先准备一个excel模板,这个模板把复杂的样式和固定的内容先准备好并且放入到项目中,然后读取到模板后向里面放入数据。 1.3、实现 第一步:准备一个excel作为导出的…

【ArkTS】入门

代码结构分析 struct Index{ } 「自定义组件:可复用的UI单元」 xxx 「装饰器:用来装饰类结构、方法、变量」 Entry 标记当前组件是入口组件(该组件可被独立访问,通俗来讲:它自己就是一个页面)Component 用…

LeetCode-克服链表不能随机访问的问题

1.重排链表 题目描述: 给定一个单链表 L 的头节点 head ,单链表 L 表示为: L0 → L1 → … → Ln - 1 → Ln 请将其重新排列后变为: L0 → Ln → L1 → Ln - 1 → L2 → Ln - 2 → … 不能只是单纯的改变节点内部的值&#xff0…

解决vue3+ts打包,ts类型检查报错导致打包失败

最近拉的开源大屏项目goview,在打包的过程中一直报Ts类型报错导致打包失败,项目的打包命令为: "build": "vue-tsc --noEmit && vite build" 是因为 vue-tsc --noEmit 是 TypeScript 编译器(tsc&#…

python 基于imageio_ffmpeg 直接操作ffmpeg,无需额外在官网下载!

python直接操作ffmpeg,无需在官网下载! 一、前言 在要使用ffmpeg处理的时候,不想去官网下载ffmpeg然后添加到环境变量再使用。研究了一下,可以通过下面的方法解决 imageio_ffmpeg subprocess 二、具体步骤 1、环境配置 pip i…

报数游戏C语言

分析:掌握数字移动的规律,以及判断,我们可以用一个二维数组来记录每一个人说的数字,就像第一张图片一样,西安向右边移动,再向左下移动,再向左边移动,在向右边移动,在可以用一个数组来…

pytorch强化学习(1)——DQNSARSA

实验环境 python3.10 torch2.1.1 gym0.26.2 gym[classic_control] matplotlib3.8.0 numpy1.26.2DQN代码 首先是module.py代码,在这里定义了网络模型和DQN模型 import torch import torch.nn as nn import numpy as npclass Net(nn.Module):# 构造只有一个隐含层的…

Zabbix监控系统部署与管理

目录 zabbix介绍 zabbix构成 zabbix进程 环境 zabbix-server节点部署 安装zabbix服务 安装与配置数据库 修改zabbix-PHP时区 登录网页安装 ​编辑数据库Access denied故障 zabbix-agent节点部署 zabbix web管理 中文乱码问题 zabbix介绍 zabbix是⼀个基于 Web 界…

【人工智能】实验二: 洗衣机模糊推理系统实验与基础知识

实验二: 洗衣机模糊推理系统实验 实验目的 理解模糊逻辑推理的原理及特点,熟练应用模糊推理。 实验内容 设计洗衣机洗涤时间的模糊控制。 实验要求 已知人的操作经验为: “污泥越多,油脂越多,洗涤时间越长”;“…

如何使用ycsb工具对mongodb进行性能测试过程

测试环境: linux系统:Centos 7.2 ,版本:Red Hat 4.8.5-44) YCSB简介 ycsb是一款性能测试工具,用Java写的,并且什么都可以压,像是mongodb,redis,mysql,hbase,等…

JavaScript值类型和引用类型两道经典面试题

JavaScript值类型和引用类型两道经典面试题 题目1题目2 题目1 首先,小试牛刀,请看第一道题。 let a {x: 10 } let b a a.x 20 console.log(b.x)a {x: 30 } console.log(b.x) a.x 40 console.log(b.x);那么上述代码输出结果是多少呢? …

逻辑分析仪_使用手册

LA1010 1> 能干啥?2> 硬件连接3> 软件安装4> 参数设置4.1> 采样深度和采样率4.2> 添加协议解析器4.3> 毛刺过滤设置 1> 能干啥? 测量通信波形,并自动解析; 比如测量,UART,SPI&…

Java系列-ConcurrentHashMap-addCount

1.addCount public class ConcurrentHashMap<K,V> extends AbstractMap<K,V>implements ConcurrentMap<K,V>, Serializable {private final void addCount(long x, int check) {CounterCell[] as; long b, s;//1.counterCells不为null//2.或者 x加到baseCou…

如何在Docker部署draw.io流程图软件并实现公网远程访问

前言 提到流程图&#xff0c;大家第一时间可能会想到Visio&#xff0c;不可否认&#xff0c;VIsio确实是功能强大&#xff0c;但是软件为收费&#xff0c;并且因为其功能强大&#xff0c;导致安装需要很多的系统内存&#xff0c;并且是不可跨平台使用。所以&#xff0c;今天给…

深入学习《大学计算机》系列之第1章 1.3节——计算机科学的知识领域

一.欢迎来到我的酒馆 第1章 1.3节&#xff0c;计算机科学的知识领域。 目录 一.欢迎来到我的酒馆二.计算机科学的知识领域1.什么是计算机科学 二.计算机科学的知识领域 什么是计算机科学&#xff1f;什么是计算机学科&#xff1f;计算机科学包含哪些知识领域&#xff1f; …

PyCharm控制台异常堆栈乱码问题解决

目录 1、问题描述2、问题原因3、问题解决 1、问题描述 PyCharm环境都已经配置成了UTF-8编码&#xff0c;控制台打印中文也不会出现乱码&#xff0c;但异常堆栈信息中如果有中文会出现中文乱码&#xff1a; 这种该怎么解决呢&#xff1f; 2、问题原因 未将PyCharm编码环境与项目…

接口自动化测试实操【设置断言思路】

1 断言设置思路 这里总结了我在项目中常用的5种断言方式&#xff0c;基本可能满足90%以上的断言场景&#xff0c;具体参见如下脑图&#xff1a; 在这里插入图片描述 下面分别解释一下图中的五种思路&#xff1a; 1&#xff09; 响应码 对于http类接口&#xff0c;有时开发人…

Python:Jupyter

Jupyter是一个开源的交互式计算环境&#xff0c;由Fernando Perez和Brian Granger于2014年创立。它提供了一种方便的方式来展示、共享和探索数据&#xff0c;并且可以与多种编程语言和数据格式进行交互。Jupyter的历史可以追溯到2001年&#xff0c;当时Fernando Perez正在使用P…

Linux Shell——输入输出重定向

输入输出重定向 1. 重定向输入2. 重定向输出 总结 最近学习了shell语法&#xff0c;总结一下关于输入输出重定向的知识。 一般情况下&#xff0c;linux每次执行命令其实都会打开三个文件&#xff0c;分别是&#xff1a; 标准输入stdin 文件描述符为0 标准输出stdout 文件描述符…

《软件方法(下)》8.2.3 提炼类和属性(1)

DDD领域驱动设计批评文集 做强化自测题获得“软件方法建模师”称号 《软件方法》各章合集 8.2 建模步骤C-1 识别类和属性 8.2.2 三种分析类 8.2.2.6 自测题 扫码或访问http://www.umlchina.com/book/quiz8_2_2.html完成在线测试&#xff0c;做到全对以获得答案。 1. [单选…