精华内容
下载资源
问答
  • Oracle job 定时器的执行时间间隔也是定时器job 的关键设置,在这一设置上,开始还没掌握,总是不知道怎么写,现总结如下,其实主要是使用了TRUNC、NEXT_DAY 、ADD_MONTHS 、LAST_DAY 几个函数的配合使用。...

    Oracle job 定时器的执行时间间隔也是定时器job 的关键设置,在这一设置上,开始还没掌握,总是不知道怎么写,现总结如下,其实主要是使用了TRUNC、NEXT_DAY 、ADD_MONTHS 、LAST_DAY 几个函数的配合使用。

     

    1)、每分钟执行

    Interval => TRUNC(sysdate,'mi') + 1 / (24*60)

    --查看时间

    select TRUNC(sysdate,'mi') + 1 / (24*60) from dual; 

    --扩展:  www.2cto.com  

    ---每五分钟执行

    Interval =>TRUNC(sysdate,'mi') + 5 / (24*60)

    select TRUNC(sysdate,'mi') + 5 / (24*60) from dual; 

     

    2)、每小时执行

    Interval => TRUNC(sysdate,'mi') + 1 / 24

    select TRUNC(sysdate, 'mi') + 1 / 24 from dual;

    --扩展:

    ---每隔五小时执行

    Interval =>TRUNC(sysdate,'mi') + 5 /24

    select TRUNC(sysdate, 'mi') + 5 / 24 from dual;

     

    3)、 每天定时执行

    例如:每天的凌晨2点执行

    Interval => TRUNC(sysdate) + 1 +2 / (24)

    select TRUNC(sysdate) + 1 +2 / (24) from dual;

    例如:每天的凌晨3点执行

    Interval => TRUNC(sysdate) + 1 +3/ (24)

    select TRUNC(sysdate) + 1 +3/ (24) from dual;

    例如:每隔5天的凌晨2点执行

    Interval => TRUNC(sysdate) + 5 +2 / (24)

    select TRUNC(sysdate) + 5 +2 / (24) from dual;

       www.2cto.com  

    4)、 每周定时执行

    例如:每周一凌晨2点执行

    Interval => TRUNC(next_day(sysdate,2))+2/24 --星期一(一周的第二天)

    select TRUNC(next_day(sysdate,2))+2/24 from dual;

    例如:每周六凌晨2点执行

    Interval => TRUNC(next_day(sysdate,7))+2/24 --星期六(一周的第七天)

    select TRUNC(next_day(sysdate,7))+2/24 from dual;

     

    5)、 每月定时执行

    例如:每月1日凌晨2点执行

    Interval =>TRUNC(LAST_DAY(SYSDATE))+1+2/24

    select TRUNC(LAST_DAY(SYSDATE))+1+2/24 from dual;

    例如:每月5日上午10点执行

    Interval =>TRUNC(LAST_DAY(SYSDATE))+5+10/24

    select TRUNC(LAST_DAY(SYSDATE))+5+10/24 from dual;

     

    6)、 每季度定时执行

    例如每季度的第一天凌晨2点执行

    Interval => TRUNC(ADD_MONTHS(SYSDATE,3),'Q') + 2/24

    select TRUNC(ADD_MONTHS(SYSDATE,3),'Q') + 2/24 from dual;

       www.2cto.com  

    7)、 每半年定时执行

    例如:每年7月1日和1月1日凌晨2点

    Interval => ADD_MONTHS(trunc(sysdate,'yyyy'),6)+2/24

    select trunc(sysdate,'yyyy') from dual;

    select ADD_MONTHS(trunc(sysdate,'yyyy'),6) from dual;

     

    8)、 每年定时执行

    例如:每年1月1日凌晨2点执行

    Interval =>ADD_MONTHS(trunc(sysdate,'yyyy'),12)+2/24

     

    补充:

    1、NEXT_DAY(d,number) 

          -- 时间点d开始,下一个星期几的日期  

          -- 星期日 = 1 , 星期一 = 2  ,星期二 = 3  ,星期三 = 4  ,星期四 = 5  ,星期五 = 6  ,星期六 = 7 

    2、ADD_MONTHS(d,n)   --返回时间点d再加上n个月

     

    3、LAST_DAY(d)             --时间点d当月份最后一天

       www.2cto.com  

    4、TRUNC(d[,fmt])      --对日期作截取 

           -- 举例当前时间是:2012-08-06  下午 04:39:00

        SELECT trunc(sysdate,'mm') FROM dual         --返回2012-8-1    当月的第一天

      SELECT trunc(sysdate,'yy') FROM dual          -- 返回2012-1-1   当年第一天

      SELECT trunc(sysdate,'dd') FROM dual          -- 返回2012-8-6   当天

      SELECT trunc(sysdate,'day') FROM dual        -- 返回2012-8-5   当周第一天

      SELECT trunc(sysdate) FROM dual                -- 返回2012-8-6   不填参数就默认是当天

           SELECT trunc(sysdate,'hh') FROM dual         -- 返回2012-8-6 下午 04:00:00   当前小时

           SELECT trunc(sysdate,'mi') FROM dual          -- 返回2012-8-6 下午 04:39:00   当前分钟

    展开全文
  • Oracle 在10g 版本以前,计划任务用的是DBMS_JOB 包,10g 版本引入DBMS_SCHEDULER ...管理,但DBMS_JOB 包的使用相对比较简单,也基本能够满足定时执行计划任务的需求,故 接下来就先看看DBMS_JOB 包的使用方法。
  • ORACLE定时任务不能自动执行的检查修复步聚。 oracle定时任务有时不能自动执行,据网上说可能是某个版本的BUG,一般通过这些步骤就能恢复了。 这是本人结合网络上的知识,解决实际问题时记录的。
  • ORACLE 定时任务没有执行 解决

    千次阅读 2019-08-13 14:49:35
    查询 selectvaluefromv$parameterwherenamelike'%job_queue_processes%' 看看值是多少?... 指定可以为执行DBMS_JOB作业和Oracle Scheduler(DBMS_SCHEDULER)作业创建的每个实例的最大作业从站...

    查询

    select value from v$parameter where name like '%job_queue_processes%'  

    看看值是多少?

    下面是11g reference的描述:JOB_QUEUE_PROCESSES 
           指定可以为执行DBMS_JOB作业和Oracle Scheduler(DBMS_SCHEDULER)作业创建的每个实例的最大作业从站数。DBMS_JOB和Oracle Scheduler共享相同的作业协调器和作业从属,它们都由JOB_QUEUE_PROCESSES参数控制。

     如果JOB_QUEUE_PROCESSES的值设置为0,则DBMS_JOB作业和Oracle Scheduler作业将不在实例上运行。

     

    使用以下命令修改

      alter system set job_queue_processes = 0 -1000 

    展开全文
  • 1、首先创建一张表 该表用来执行插入数据。 create table getSysDate(test date); 2、创建存储过程以插入数据。 create or replace procedure insertSysDate as begin insert into getSysDate values (sysdate); ...

    1、首先创建一张表 该表用来执行插入数据。

    create table getSysDate(test date);

    2、创建存储过程以插入数据。

    create or replace procedure insertSysDate as 
    begin 
    insert into getSysDate values (sysdate);
    end ;

    3、创建job设置定时

    declare
    job1 number;
    begin
    dbms_job.submit(job1,'insertSysdate;',TO_DATE('2019-07-09 15:55:00','YYYY-MM-DD HH24:MI:SS'),'sysdate+1/1440');
    commit;
    end;

    以上为所创建的job,job1为job名称 ,insertSysdate为存储过程名称,TO_DATE('2019-07-09 15:55:00','YYYY-MM-DD HH24:MI:SS')这段为存储过程下次执行时间,'sysdate+1/1440' 这段为存储过程执行时间间隔。

    当我把以上所有的步骤都走完之后,发现表中并没有新的数据,然后我又通过"SELECT * FROM DBA_JOBS"该语句查看新建的job,发现job是已经创建成功了的,不过上次执行时间为空。

    4、而后我又通过以下语句执行job,看是否有问题。

    begin
    dbms_job.run(9);
    end;

    执行过后发现表中有数据,那就是job没什么问题,但是系统中可能有些地方没设置正确。

    5、然后我又通过以下语句修改job下次执行时间,改完当前时间后的几分钟,几分钟后,发现还是没有执行成功。

    begin
    dbms_job.next_date(9, TO_DATE('2019-07-09 16:30:00','YYYY-MM-DD HH24:MI:SS'));
    end;

    6、最后在网上查找原因,发现了一个哥们的博客,真的是救命。

    select value from v$parameter where name like '%job_queue_processes%' 

    该语句可以查看你的当前用户下执行job的临界值,当我查看之后发现为0,也就是说我的job一个都不能执行。

    于是我果断用以下语句将临界值修改为100。

    alter system set job_queue_processes =100;

    然后发现我的job已经开始自动执行了,应该是这个临界值默认就是0,而后需要自己修改,真的是个大坑,浪费了我一下午的时间。

    最近又出现了一个大坑  就是 我手动执行job的时候 会出现以下的错误

    而后,我在SYS下面创建job,在SYS下面执行job,发现执行是成功的,这时候发现可能是权限的问题,于是又给我当前用户赋予执行job的权限。

    grant create job to orace_user1;

    grant manage scheduler to orace_user1;

    GRANT EXECUTE ON DBMS_JOB TO USER;

    最主要的是下面的那个 给用户赋予当前用户可以执行存储过程的权限。

     

    展开全文
  • ORACLE定时任务没有执行原因

    万次阅读 2018-04-17 08:49:08
    ORACLE定时任务没有执行原因这个问题研究了挺长时间,从最开始写ORACLE存储过程 create or replace procedure ...写定时任务 dbms_job.submit(...)执行定时任务 dbms_job.run(job num)如果以上三部分都没有报错,可...
    ORACLE定时任务没有执行原因

    这个问题研究了挺长时间,

    从最开始写ORACLE存储过程 create or replace procedure ...
    写定时任务 dbms_job.submit(...)
    执行定时任务 dbms_job.run(job num)

    如果以上三部分都没有报错,可存储过程没有执行出来特定的结果,可以考虑是不是因为ORACLE默认的定时任务执行范围设置太小了,

    首先查看一下你执行的定时任务的job num 是多少,
    select * from user_jobs 

    然后再查看一下执行任务的job 的临界值是多少,一般都比较小
    看select value from v$parameter where name like '%job_queue_processes%'  ,的值是多少

    最后如果是这个原因造成的话,直接把这个临界值修改大点,改成100就OK了,
    如果job数量超过10,第11个就不会执行了

    alter system set job_queue_processes =100;


    展开全文
  • -- job 创建 begin dbms_scheduler.create_job ( job_name => 'AGENT_LIQUIDATION_JOB', ... job_type => 'STORED_PROCEDURE', ... job_action => 'AGENT_... comments => '执行代理商清分程序' ); end;
  • select job 任务序号,last_date 成功时间 from user_jobs; 转载于:https://www.cnblogs.com/xianyao/p/11447182.html
  • 1、创建定时向表中插入数据的存储过程,名为testJob。 CREATE OR REPLACE PROCEDURE "testJob" AS BEGIN EXECUTE IMMEDIATE 'INSERT INTO TABLE_HIS SELECT * FROM TABLE_AI'; COMMIT; END; 2、...
  • oracle定时任务失效

    2019-10-17 15:15:06
    发现系统数据没有更新,查看oracle定时任务,估计没有执行。 发现next_date变成了4000/1/1 ,broken被选中。 select * from user_jobs发现该任务失败次数达16次。 查得如下原因: 当任务运行失败时,SNP过程在1分钟...
  • 一、创建存储过程 CREATE OR REPLACE PROCEDURE test_proc IS --test_proc... --需要执行的sql语句 COMMIT; EXCEPTION WHEN OTHERS THEN DBMS_OUTPUT.PUT_LINE('Exception happened,data was rollback'); ...
  • ORACLE定时执行Job任务

    万次阅读 2018-07-23 12:09:44
    因为是统计周月数据,便想到了数据库定时Job任务创建。 在百度上,找到了一篇好文章,跟大家分享:http://langgufu.iteye.com/blog/1179235 另一篇文章是关于ORACLE时间间隔书写:...
  • Oracle定时任务执行存储过程带参数

    千次阅读 2018-06-14 15:58:24
    定时任务: ----功能说明:每日凌晨0点定时执行存储过程  declare job_use_daily number;  begin  dbms_job.submit(job_use_daily,'declare retCode number; retMsg varchar2(200); begin pro_test ...
  • oracle 创建定时任务执行存储过程

    千次阅读 2018-12-20 21:49:29
    ,next_date => to_date('04/07/2017 00:00:00','dd/mm/yyyy hh24:mi:ss') --下次执行时间 ,interval => 'TRUNC(LAST_DAY(SYSDATE))+4' --每月4号0点 ); SYS.DBMS_OUTPUT.PUT_LINE('Job Number is: ' || to_char...
  • 创建定时任务/***************************************************************** * * 移动抵扣券快到期推送提醒 * 首次执行 : 2016-09-19 10:00:00 * 定期执行 : 每天10:00:00 * *******************************...
  • NULL 博文链接:https://xiaosheng12345.iteye.com/blog/1984408
  • oracle定时任务中的时间设置

    千次阅读 2019-09-30 08:20:07
    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本...1、简单的定时任务时间设置。 描述 参数值 每天运行一次 'SYSDATE + 1' 每小时运行一次 ‘SYSDATE+1/24’ 每10分钟运...
  • 问题描述: 编写shell脚本在Linux服务器中通过cron服务定时执行自动备份,每次备份完成后在结尾操作中数据库报错,服务被关闭。shell脚本单独执行备份没有问题。查看alert日志发现以下错误信息:Errors in file /...
  • Oracle Job 定时任务执行延迟

    千次阅读 2018-11-28 11:41:15
    我job的Interval设置的sysdate+1,Next date 设置的2018-11-26 8:00:00 ...当Interval设置为sysdate+1时,执行完这个定时任务后设置Next date时间加上一天,这样每天的执行都会延迟,延迟越来越长...
  • Oracle Job定时任务

    2014-04-28 14:22:17
    Oracle Job定时任务
  • 创建Oracle定时任务

    千次阅读 2019-05-24 10:08:42
    PLSQL创建Oracle定时任务 用语句创建 1、创建任务执行的存储过程,如名称为testJob,向测试表中插入数据,如文章开头,此处省略。 2、创建一个 定时任务 job declare job number; BEGIN DBMS_JOB.SUBMIT( ...
  • Oracle定时任务

    2019-03-17 01:54:30
    NULL 博文链接:https://huxiuliang.iteye.com/blog/563180
  • oracle定时任务

    2015-01-19 10:09:42
    在plsql下新建一个sql窗口就可以执行oracle定时任务
  • 1、创建任务执行的存储过程UpdateSettlementJob create or replace procedure UpdateSettlementJob is begin update cmp_settlement set pk_tradetype = 'H194', pk_tradetypeid = '1001AA10000000008UOZ' ...
  • oracle 定时任务

    万次阅读 2018-09-29 09:52:24
    Oracle创建定时任务,下面以创建一个每天凌晨3点钟执行定时任务为实例。 1、创建定时任务 begin  sys.dbms_job.submit(job => 23,  what => 'PRO_JOB;',  next_date => to_date('10-10-...
  • oracle修改定时任务下次启动时间

    千次阅读 2014-04-12 10:40:54
    begin dbms_job.next_date(job,to_date('','yyyy-mm-dd hh24:mi:ss'))
  • Oracle定时任务DBMS_JOB

    千次阅读 2020-11-20 15:17:14
    通俗的来讲,开发中定制定时执行任务有两种方式,代码级别和数据库级别,代码级别的不多阐述,本文主要介绍如何使用Oracle数据库的job来定制一个简单的定时执行任务的步骤。 需求 每间隔1秒钟删除表 batchs_lock...
  • 这个可以在表中加上一个时间戳字段,然后后期比对时间戳字段来对相应的账号进行解锁,我比较偷懒,就想着用oracle定时执行任务来做一个批量自动处理,把这个交个数据库自己去执行,省下写方法去比对的操作。...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 19,364
精华内容 7,745
关键字:

oracle定时任务执行时间