Oracle 定时任务详解(dbms_job)

2023-11-12

1 概述

1. 数据来源包:dbms_job,Oracle 10g 前常用

2. 目前已被 dbms_scheduler 所取代,且 Oracle 建议使用 dbms_scheduler

在这里插入图片描述

2 dbms_job

1. 查看数据库中定时任务的最多并发数(默认:1000(1) show parameter job_queue_processes -- 超过了,就得排队

2. 设置数据库中定时任务的最多并发数(比如:10(1) alter system set job_queue_processes = 10

3. 主要视图
   (1) select * from dba_jobs t; -- 所有 job 信息
   (2) select * from dba_jobs_running t; -- 执行中的 job 信息

4. 主要参数
   (1) job		: job 序列号(来自 sys.jobseq)
   (2) what		: 具体要做的事情,常为要调用的 '存储过程名'
   (3) next_date: 下次运行时间
   (4) interval : 时间间隔(周期),格式同平常咱写 日期一样,如:-- 不区分大小写
       <1>30 秒运行一次	'SYSDATE + 30/(24*60*60)'
       <2> 每天午夜 12'trunc(sysdate + 1)'

5. 日期函数
	select sysdate 当前时间,
	       sysdate + 1 每天,
	       sysdate + 1 / 24 每小时,
	       sysdate + 1 / (24 * 60) 每分钟,
	       sysdate + 1 / (24 * 60 * 60) 每秒,
	       sysdate + 7 每周,
	       trunc(sysdate + 1) 每天午夜12,
	       trunc(sysdate + 1) + (8 * 60 + 30) / (24 * 60) 每天早上830,
	       -- show parameter nls_date_language;  'TUESDAY'
	       next_day(trunc(sysdate), '星期二') + 12 / 24 每星期二中午12,
	       trunc(last_day(sysdate)) + 1 每个月第一天的午夜12,
	       trunc(add_months(sysdate + 2 / 24, 3), 'Q') - 1 / 24 每个季度最后一天的晚上11,
	       -- 周六 saturday,周日 sunday
	       trunc(least(next_day(sysdate, '星期六'), next_day(sysdate, '星期日'))) +
	       (6 * 60 + 10) / (24 * 60) 每周六和周日早上610from dual;

dbms_job 包头部分:
在这里插入图片描述

基础数据准备:

create table dbms_job_history (
  message     varchar2(100),
  create_date date
);


create or replace procedure p_dbms_job_test as
begin
  -- 记录 job 信息
  insert into dbms_job_history
    (message, create_date)
  values
    ('dbms_job', sysdate);

  commit;
end;

2.1 提交

procedure submit(job       out binary_integer,
                 what      in varchar2,
                 next_date in date default sysdate,
                 interval  in varchar2 default 'null',
                 no_parse  in boolean default false, -- 是否需要解析与 job 相关的过程
                 instance  in binary_integer default 0, -- 指定哪个实例可以运行 job
                 force     in boolean default false); -- 是否强制运行与 job 相关的实例

说明:参数 no_parse、instance、force 一般不指定

示例:每三分钟调用一次过程 p_dbms_job_test:

declare
  job binary_integer;
begin
  dbms_job.submit(job       => job,
                  what      => 'p_dbms_job_test();',
                  next_date => sysdate, -- 立即执行
                  interval  => 'sysdate + 3/1440' -- 1天 = 24*60*60 = 1440
                  );
  -- 记得哦         
  commit;
end;

查询结果:
在这里插入图片描述

2.2 暂停

procedure broken(job       in binary_integer,
                 broken    in boolean,
                 next_date in date default sysdate);

示例:暂停上述定时任务

declare
begin
  dbms_job.broken(job => 28, broken => true);

  commit;
end;

查询截图:
在这里插入图片描述

2.3 修改

procedure change(job       in binary_integer,
                 what      in varchar2,
                 next_date in date,
                 interval  in varchar2,
                 instance  in binary_integer default null,
                 force     in boolean default false);

其它都只是 chagne 的一部分,如
(1) what
(2) next_date
(3) interval
(4) instance

示例:修改上述定时任务的时间间隔为:每 5 分钟执行一次

declare
begin
  dbms_job.interval(job => 28, interval => 'sysdate + 5/1440');
  
  -- 记得提交
  commit;
end;

查询截图:
在这里插入图片描述

2.4 运行

procedure run(job   in binary_integer,
              force in boolean default false);

示例:运行上述已暂停的定时任务

declare
begin
  dbms_job.run(job => 28);

  commit;
end;

-- 等同于
-- declare
-- begin
--   dbms_job.broken(job => 28, broken => false, next_date => sysdate);
-- commit;
-- end;

查询截图:
在这里插入图片描述

在这里插入图片描述

2.5 删除

declare
begin
  dbms_job.remove(job => 28);

  commit;
end;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Oracle 定时任务详解(dbms_job) 的相关文章

随机推荐

  • 使用VMware给Ubuntu增加磁盘容量

    一般只给虚拟机里面的Ubuntu很少的空间 到了空间不足就尴尬了 那么就扩充磁盘解决问题吧 一 VMware手动扩容 打开虚拟机 选择你要扩充的客户机 点击 编辑虚拟机设置 然后详细设置 选择硬盘 gt 扩展 gt 目标总磁盘大小 不是增量
  • [力扣c++实现] 152. 乘积最大子数组

    152 乘积最大子数组 给你一个整数数组 nums 请你找出数组中乘积最大的非空连续子数组 该子数组中至少包含一个数字 并返回该子数组所对应的乘积 测试用例的答案是一个 32 位 整数 子数组 是数组的连续子序列 示例 1 输入 nums
  • xshell无法连接虚拟机原因Connection failed. Type `help' to learn how to use Xshell prompt.

    问题分析 xshell无法连接的问题有多种 比如虚拟机没有安装ssh服务 虚拟机没有启动ssh服务 又或者是防火墙 禁用端口等问题 这些都比较容易解决 下面我介绍的是我遇到的一种比较难的无法连接情况 VMware无法在Windows下创建适
  • Proxy(代理)服务器

    代理服务器 代理服务器必须有DNS地址 如果开启转发需要在客户端设置DNS地址 NAT 是直接与目标服务器通信的 也就是直接访问的baidu服务器 目标地址是baidu服务器的地址 所以必须要有DNS来解析主机名 如果是通过代理客户端是没有
  • 全球及中国生物技术产业创新发展模式及十四五应用方向研究报告2021-2027年

    全球及中国生物技术产业创新发展模式及十四五应用方向研究报告2021 2027年HS HS HS HS HS HS HS HS HS HS HS HS HS HS HS HS HS HS 修订日期 2021年10月 搜索鸿晟信合研究院查看官网
  • 交叉编译器简介以及ARM交叉编译器arm-linux-gcc

    一 交叉编译器简介 在一种计算机环境中运行的编译程序 能编译出在另外一种环境下运行的代码 这个编译过程就叫交叉编译 简单地说 就是在一个平台上生成另一个平台上的可执行代码 二 体系结构与操作系统 1 常见的体系结构有ARM结构 x86结构等
  • SPSS异常值处理编程

    SPSS异常值处理编程 异常值是指在数据集中与其他观测值相比明显不同的值 在数据分析过程中 异常值可能会对结果产生不良影响 因此需要进行异常值处理 SPSS作为一种广泛使用的数据分析工具 提供了多种方法来检测和处理异常值 本文将介绍SPSS
  • 【python】UI自动化——鼠标悬浮显示二级菜单相关操作

    一 来个百度示例吧 想要点击如下图的图片 先上代码 import time from selenium import webdriver from selenium webdriver import ActionChains def sta
  • matlab 数据降维和重构_处理不平衡机器学习数据时需要了解的技术

    我们在处理真实世界机器学习数据集时遇到的主要挑战之一是数据的比例不平衡 欺诈检测是这类数据的最好例子 在本文中 我们将使用kaggle中的信用卡欺诈检测数据集 www kaggle com mlg ulb creditcardfraud 在
  • 推荐基于VUE2.0自定义分页插件

    基于vue2 0实现的自定义分页 可设置每页显示条数 带跳转框直接跳转到相应页面 文档地址 https gitee com it distant branch vue custom pages 实现效果如下 支持功能 x 自定义分页条数 x
  • -bash: ./startup.sh: Permission denied

    今天在执行tomcat的时候 用户没有权限 而导致无法执行 用命令chmod 修改一下bin目录下的 sh权限就可以了 如chmod u x sh
  • YUV420P与YUVJ420P

    1 YUV420P与YUVJ420P AV PIX FMT YUV420P lt planar YUV 4 2 0 12bpp 1 Cr Cb sample per 2x2 Y samples AV PIX FMT YUVJ420P lt
  • TOF 3DSensor SDK下载

    DCAM710 与 DCAM100 SDK下载 https picozense picovr com cn sdk html PicoZense SDK是基于PicoZense深度摄像头的软件开发包 支持Windows Linux Open
  • Mybatis Cannot convert string to java.sql.Timestamp value;

    生成默认无参构造函数
  • SpringAop使用的到底是JDK动态代理还是Cglib?

    1 从源码分析 optimize标志已设置 也就是为true 设置proxyTargetClass 目标代理类 标志 更改proxyTargetClass 目标代理类 标志的方法 没有指定代理接口 2 错误的推论 3 最终的推论 什么时候使
  • CodeGeeX中这些隐藏的设置,你知道吗?

    随着CodeGeeX整体性能的升级 越来越多的用户发现CodeGeeX的很多实用功能 能够帮助程序员更快更好的编写代码和解决技术问题 近期 我们看到许多用户在使用CodeGeeX的过程中 有一些相似的疑问 比如 很多人希望能够通过调整设置
  • 以太网流量控制——PAUSE帧

    http www tuicool com articles Bzu2uuf 今天在测试DPDK性能的时候 发现发包工具的发包速率无法提升上去 千兆网卡设置速率70W qps 只能发出1W的速率 抓包发现有大量的PAUSE流控帧 一 PAUS
  • High-resolution Face Swapping via Latent Semantics Disentanglement

    High resolution Face Swapping via Latent Semantics Disentanglement 人脸视频交换 从浅层派生结构属性 从深层派生外观属性 结构转移潜在方向 进一步分离结构属性中的身份和姿态信
  • 【算法学习笔记】20:朴素Dijkstra与堆优化Dijkstra(无负权边单源点最短路)

    Dijkstra算法用于在所有边权都非负的图上 求单源点最短路 设 n n n是图上结点的数量 m m m是边的数量 则朴素Dijkstra算法的时间复杂度是 O
  • Oracle 定时任务详解(dbms_job)

    文章目录 1 概述 2 dbms job 2 1 提交 2 2 暂停 2 3 修改 2 4 运行 2 5 删除 1 概述 1 数据来源包 dbms job Oracle 10g 前常用 2 目前已被 dbms scheduler 所取代 且