zoukankan      html  css  js  c++  java
  • Oracle中job执行出错后重试机制

    1、每次重试时间都是递增的,第一次2分钟,4分钟,8分钟,16分钟 ... 依此类推。
    2、当超过1440分钟,也就是24小时的时候,固定的重试时间为1天。
    3、超过16次重试后,job 就会被标记为broken ,next_date 为4000-1-1,也就是不再进行job重试。
    4、oracle数据库重试的时间到达设定的下次执行时间后,以设定的job执行时间为准。
     
    查看job基础信息及运行信息:

    select * from user_jobs;
    select * from dba_jobs_running;
    select * from dba_jobs;

     

    job执行的存储过程异常,导致job执行失败,查询select * from dba_jobs的failures字段加1,同时重试执行时间为本次执行时间+2分钟,如果再次失败,由重试的时间为上次开始执行时间+4 , 再次失败则+8,2的阶乘,以此类推,直到失败16次后,job就broken属性为Y,不再尝试重试。

    某一次执行成功后,dba_jobs中failures字段清0

    job的执行时间往后推迟很长时间原因:

    job执行时间间隔没有加trunc截取精度,而是直接使用sysdate+1/(24*60),由于job启动需要时间或扫描精度,导致下次执行时间用的标准时间已经不是启动JOB的时间,而是延迟几秒,执行一次就延迟几秒,执行次数多了延迟就长了

    记一次深坑:

    Oracle job进程,包含协调进程(主进程)以及奴隶进程(子进程)

    job_queue_processes取值范围为0到1000,总共可创建多少个job进程由job_queue_processes参数来决定

    job_queue_processes默认值为0,默认情况下任意方式创建的job都不会运行,只有大于0的时候,才会有进程去执行job !!!

    job_queue_processes线程由DBMS_JOB与DBMS_SCHEDULER共享

    查询方法:select value from v$parameter where name like '%job_queue_processes%' 

  • 相关阅读:
    HDU 5154 Harry and Magical Computer bfs
    opencv第一课 打开一个图片
    Codeforces Round #131 (Div. 1) A
    Topcoder SRM 643 Div1 250<peter_pan>
    bestcoder#23 1002 Sequence II 树状数组+DP
    bestcoder#23 1001 Sequence
    Oil Deposits 搜索 bfs 强联通
    迷宫问题 模拟队列 广度优先搜索
    Codeforces Round #283 (Div. 2) C. Removing Columns 暴力
    Codeforces Round #283 (Div. 2) B. Secret Combination 暴力水题
  • 原文地址:https://www.cnblogs.com/yuming2018/p/13718440.html
Copyright © 2011-2022 走看看