`

Job特性及解决时间偏移

 
阅读更多
1、创建Job
 

variable jobno number ;

begin

  sys.dbms_job.submit(job => :jobno,

                      what => 'your_procedure1;

                               your_procedure2;' ,

                      next_date => to_date( '20080918 18:50:00' , 'yyyymmdd hh24:mi:ss' ),

                      interval => 'sysdate+1/24' );

  commit ;

end ;

/

 

 

2、删除Job

 

print jobno;

 

begin

  dbms_job.remove(:jobno);

  commit ;

end ;

/

 

 

3、其他操作:

 

修改要执行的操作:dbms_job.what(jobno,what);

修改下次执行时间:dbms_job.next_date(job,next_date);

修改间隔时间:dbms_job.interval(job,interval);

停止job:dbms.broken(job,broken,nextdate);

启动job:dbms_job.run(jobno);

 

修改job_queue_processes的值:

可通过select * from v$parameter;查看其值;

或者直接用show parameter job_queue_processes;查看如下:

 

NAME TYPE VALUE
--------------- ----------- ------------
job_queue_processes integer 10

 

方法1.startup pfile='C: oracleora90databaseinitorcl.ora';

//这个方法用来修改initorcl.ora文件的job_queue_processes参数,然后重新启动数据库


方法2.alter system set job_queue_processes=10

//这个方法不用重启数据库就可以生效,系统自动修改init.ora文件以后即可生效 。

 

注意:保证参数不为0,否则JOB不自动运行

 

 

4、时间间隔偏移的问题:

 

SQL> create table t10 (a int ,b date);
 
Table created

SQL> create or replace procedure k
  2  as
  3    i int := 0;
  4  begin
  5    insert into t10 values(i,sysdate);
  6    commit;
  7  end;
  8  /
 
Procedure created

SQL> begin
  2    sys.dbms_job.submit(job => :jobno,
  3                        what => 'k;',
  4                        next_date => to_date(sysdate),
  5                        interval => 'sysdate+1/1440');
  6    commit;
  7  end;
  8  /
 
PL/SQL procedure successfully completed
jobno
---------
47

 

SQL> column B format a30
SQL> column A format a5
SQL> select * from t10;
 
    A B
----- ------------------------------
    0 2008-9-18 17:07:38
    0 2008-9-18 17:08:39
    0 2008-9-18 17:09:40
    0 2008-9-18 17:10:41

 

发现虽然设置了每分钟执行一次,但是每次执行时间是在向后偏移

所以需要进行调整,将job建为如下:

 

SQL> begin
  2    dbms_job.remove(:jobno);
  3    commit;
  4  end;
  5  /
 
PL/SQL procedure successfully completed
jobno
---------
47

 

SQL> begin
  2    sys.dbms_job.submit(job => :jobno,
  3                        what => 'k;',
  4                        next_date => to_date(sysdate),
  5                        interval => 'trunc(sysdate,''mi'')+1/1440');
  6    commit;
  7  end;
  8  /
 
PL/SQL procedure successfully completed
jobno
---------
48

 

SQL> truncate table t10;
 
Table truncated

 

SQL> select * from t10;
 
    A B
----- ------------------------------
    0 2008-9-18 17:19:02
    0 2008-9-18 17:20:03
    0 2008-9-18 17:21:04
    0 2008-9-18 17:22:01
    0 2008-9-18 17:23:02

 

虽然秒数还是有稍微的不同,这是由于每次job的运行时间所致

但是不会像之前一样一直往后偏移。

 

分享到:
评论

相关推荐

    Job限制进程运行时间

    "Job限制进程运行时间"这个主题涉及到操作系统级别的管理技术,特别是Windows操作系统中的Job Objects特性。Job Objects允许开发者对进程进行集中式的管理和限制,比如限制其执行时间、内存使用等。 首先,我们来...

    oracle JOB常见的执行时间定义

    oracle JOB常见的执行时间, 在初学者定义JOB时,对于执行时间往往不知道如何设置. 该文档列举了常见的定义方式.可以由此进行扩展.

    解决k8s中xxl-job执行器pod重建后无法读取到执行日志的问题

    解决方案为单独再部署一个xxl-job-read-log服务,将读日志的请求都转到这个服务上,由这个服务统一读取日志。 具体步骤: 1.将执行日志通过nfs存储到一个统一路径,由于文件名是数据库id,所以不会有覆盖问题。 2....

    传参数给job及job状态学习

    标题中的“传参数给job及job状态学习”指的是在使用Quartz Scheduler进行任务调度时,如何传递参数给Job以及理解Job的状态管理。Quartz Scheduler是一个开源的Java作业调度框架,它允许程序创建、安排和执行重复的...

    XXL-JOB分布式任务调度系统培训PPT

    这些框架都有其特点和缺陷,但是 XXL-JOB 的出现为我们提供了一种高效、可靠、灵活的定时任务解决方案。 在选择定时任务框架时,我们需要考虑多种因素,如任务的执行频率、任务的执行时间、任务的并发数等。同时,...

    xxl-job适配达梦数据库

    XXL-JOB是一款轻量级分布式任务调度平台,它提供了简单易用的API接口和Web管理界面,使得开发者可以方便地实现任务的分布式调度。在本案例中,我们关注的是如何将XXL-JOB与达梦数据库(DM8)进行适配。达梦数据库...

    elasticjob中文文档

    ElasticJob-Lite支持多种特性,如分布式并行处理、弹性扩容、故障转移、作业分片等。 从提供的文件内容可以看出,ElasticJob-Lite的版本为2.1.5,是在2018年1月4日更新的,并且在GitHub上有一个专门的项目地址为***...

    xxl-job-2.3.0.rar

    在实际使用中,开发者通常会通过XXL-JOB提供的API接口创建任务,并设置调度策略,如cron表达式来定义执行时间。任务内容可以是简单的Java方法,也可以是复杂的业务逻辑。XXL-JOB支持分布式执行,当任务量过大时,...

    oracle job使用详解

    Oracle Job 是 Oracle 数据库中的一个特性,用于在预定义的时间间隔自动执行 PL/SQL 块或存储过程。Oracle Job 的使用对于实现定时任务、批处理操作和维护工作至关重要。以下是对 Oracle Job 使用的详细解释: 1. *...

    Oracle Job的用法

    Oracle Job是Oracle数据库中的一个强大特性,主要用于在特定时间或间隔执行数据库操作,例如数据备份、维护任务或者定期的数据处理。以下是对Oracle Job使用方法和技巧的详细说明: 一、创建Oracle Job Oracle Job...

    oracle job 创建

    Oracle Job 是 Oracle 数据库中的一个特性,用于在预定义的时间间隔自动执行数据库任务,例如运行存储过程、PL/SQL 块或者 SQL 查询。对于初学者来说,理解如何创建、运行和管理 Oracle Job 是十分重要的。 1. **...

    Oracle Job 语法和时间间隔的设定.htm

    Oracle Job 语法和时间间隔的设定

    job shop -matlab program

    标题 "job shop -matlab program" 指涉的是一个基于MATLAB的作业调度程序,专门用于解决作业车间调度问题。在制造业和生产计划中,作业车间调度问题(Job Shop Scheduling Problem, JSP)是一个典型的优化问题,涉及...

    jobHandler调度器

    下面我们将详细探讨JobHandler调度器的工作原理、功能特性以及如何进行实际操作。 1. **工作原理**: JobHandler调度器采用中心式调度模型,通过一个中心调度服务器来管理多个执行器节点。执行器节点(Executor)...

    oracle_job的创建更改及删除

    其中,`job` 是作业的编号,`what` 是执行的任务的名称及其输入参数,`next_date` 是任务执行的时间,`interval` 是任务执行的时间间隔。 例如,创建一个名为 `MY_Procedure` 的存储过程,并使用 `DBMS_JOB` 包中的...

    ORACLE 创建JOB脚本及时间间隔解说

    在Oracle数据库中,`DBMS_JOB`包是一个用于创建后台作业(JOB)的PL/SQL程序,它允许用户安排在特定时间执行的SQL或PL/SQL过程。在本篇文章中,我们将深入探讨如何创建Oracle JOB脚本以及如何设置不同的时间间隔。 ...

    xxl-job oracle 适配版本

    1. **数据库表结构**:XXL-JOB原有的MySQL表结构可能需要进行调整以适应Oracle的语法和特性。例如,表字段的数据类型、主键策略、索引创建等可能需要相应修改。 2. **SQL语句优化**:Oracle数据库有自己的SQL语法...

    elasticjob分布式调度动态添加任务

    ElasticJob是一个由当当网开源的分布式任务调度框架,它基于阿里巴巴的Quartz Scheduler进行了扩展,旨在解决在分布式环境下,复杂任务调度的问题。ElasticJob主要分为两个部分:ElasticJob-Lite和ElasticJob-Cloud...

    分布式调度xxl-job

    分布式调度XXL-Job是一个分布式任务调度平台,其核心设计目标是开发迅速、学习简单、轻量级、易扩展。XXL-Job占有率很高,是近几年大量流行的技术,可以作为公司内部培训技术分享必备知识。 知识点一:XXL-Job的...

    oracle job

    8. **高级特性**:Oracle Job还支持作业链(job chains)、依赖关系、计划窗口(schedule windows)和资源管理,允许根据系统负载或优先级来调度作业。 9. **使用DBMS_ALERT**:对于需要在Job完成时通知用户的场景...

Global site tag (gtag.js) - Google Analytics