Oracle Job 不执行

ORACLE定时任务不能自动执行的检查修复步聚 ORACLE定时任务不能自动执行的检查修复步聚。 oracle定时任务有时不能自动执行,据网上说可能是某个版本的BUG,一般通过这些步骤就能恢复了。 这是本人结合网络上的知识,解决实际问题时记录的。 立即下载

关于Oracle Job 不执行

2008-11-11 19:48

我们用的生产环境Job是可以正常执行的,但是在测试环境是不可以执行的

在网上查了一下原因如下

SQL> show parameter job

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
job_queue_processes                  integer     0

job_queue_processes 这个参数设置成了0,可以通过语句

ALTER SYSTEM SET JOB_QUEUE_PROCESSES = 10

来解决

另外,看了一下Eygle的文章也有帮助,下面是链接过来的文章

转自:http://www.eygle.com/archives/2004/11/job_can_not_execute_auto.html

昨天接到研发人员报告,数据库定时任务未正常执行,导致某些操作失败。

开始介入处理该事故.
系统环境:
SunOS DB 5.8 Generic_108528-21 sun4u sparc SUNW,Ultra-4
Oracle9i Enterprise Edition Release 9.2.0.3.0 - Production

1.首先介入检查数据库任务

 

$ sqlplus "/ as sysdba"

SQL*Plus: Release 9.2.0.3.0 - Production on Wed Nov 17 20:23:53 2004

Copyright (c) 1982, 2002, Oracle Corporation.  All rights reserved.

Connected to:
Oracle9i Enterprise Edition Release 9.2.0.3.0 - Production
With the Partitioning, OLAP and Oracle Data Mining options
JServer Release 9.2.0.3.0 - Production

SQL> select job,last_date,last_sec,next_date,next_sec,broken,failures from dba_jobs;

       JOB LAST_DATE LAST_SEC         NEXT_DATE NEXT_SEC         B   FAILURES INTERVAL
---------- --------- ---------------- --------- ---------------- - ----------   ----------------------------
        31 16-NOV-04 01:00:02         17-NOV-04 01:00:00         N          0 trunc(sysdate+1)+1/24
        27 16-NOV-04 00:00:04         17-NOV-04 00:00:00         N          0 TRUNC(SYSDATE) + 1
        35 16-NOV-04 01:00:02         17-NOV-04 01:00:00         N          0 trunc(sysdate+1)+1/24
        29 16-NOV-04 00:00:04         17-NOV-04 00:00:00         N          0 TRUNC(SYSDATE) + 1
        30 01-NOV-04 06:00:01         01-DEC-04 06:00:00         N          0 trunc(add_months(sysdate,1),'MM')+6/24
        65 16-NOV-04 04:00:03         17-NOV-04 04:00:00         N          0 trunc(sysdate+1)+4/24
        46 16-NOV-04 02:14:27         17-NOV-04 02:14:27         N          0 sysdate+1
        66 16-NOV-04 03:00:02         17-NOV-04 18:14:49         N          0 trunc(sysdate+1)+3/24

8 rows selected.

发现JOB任务是都没有正常执行,最早一个应该在17-NOV-04 01:00:00执行。但是没有执行。

2.建立测试JOB

 

create or replace PROCEDURE pining
  IS
BEGIN
         NULL;
 END;
/

variable jobno number;
variable instno number;
begin
  select instance_number into :instno from v$instance;
  dbms_job.submit(:jobno, 'pining;', trunc(sysdate+1/288,'MI'), 'trunc(SYSDATE+1/288,''MI'')', TRUE, :instno);
end;
/

发现同样的,不执行。
但是通过dbms_job.run(<job>)执行没有任何问题。

3.进行恢复尝试

怀疑是CJQ0进程失效,首先设置JOB_QUEUE_PROCESSES为0,Oracle会杀掉CJQ0及相应job进程
SQL> ALTER SYSTEM SET JOB_QUEUE_PROCESSES = 0;

等2~3分钟,重新设置

SQL> ALTER SYSTEM SET JOB_QUEUE_PROCESSES = 5;

此时PMON会重起CJQ0进程

在警报日志中可以看到以下信息:

 

Thu Nov 18 11:59:50 2004
ALTER SYSTEM SET job_queue_processes=0 SCOPE=MEMORY;
Thu Nov 18 12:01:30 2004
ALTER SYSTEM SET job_queue_processes=10 SCOPE=MEMORY;
Thu Nov 18 12:01:30 2004
Restarting dead background process CJQ0
CJQ0 started with pid=8

 

但是Job仍然不执行,而且在再次修改的时候,CJQ0直接死掉了。

 

Thu Nov 18 13:52:05 2004
ALTER SYSTEM SET job_queue_processes=0 SCOPE=MEMORY;
Thu Nov 18 14:09:30 2004
ALTER SYSTEM SET job_queue_processes=10 SCOPE=MEMORY;
Thu Nov 18 14:10:27 2004
ALTER SYSTEM SET job_queue_processes=0 SCOPE=MEMORY;
Thu Nov 18 14:10:42 2004
ALTER SYSTEM SET job_queue_processes=10 SCOPE=MEMORY;
Thu Nov 18 14:31:07 2004
ALTER SYSTEM SET job_queue_processes=0 SCOPE=MEMORY;
Thu Nov 18 14:40:14 2004
ALTER SYSTEM SET job_queue_processes=10 SCOPE=MEMORY;
Thu Nov 18 14:40:28 2004
ALTER SYSTEM SET job_queue_processes=0 SCOPE=MEMORY;
Thu Nov 18 14:40:33 2004
ALTER SYSTEM SET job_queue_processes=1 SCOPE=MEMORY;
Thu Nov 18 14:40:40 2004
ALTER SYSTEM SET job_queue_processes=10 SCOPE=MEMORY;
Thu Nov 18 15:00:42 2004
ALTER SYSTEM SET job_queue_processes=0 SCOPE=MEMORY;
Thu Nov 18 15:01:36 2004
ALTER SYSTEM SET job_queue_processes=15 SCOPE=MEMORY;

4.尝试重起数据库
这个必须在晚上进行

 

PMON started with pid=2
DBW0 started with pid=3
LGWR started with pid=4
CKPT started with pid=5
SMON started with pid=6
RECO started with pid=7
CJQ0 started with pid=8
QMN0 started with pid=9
....

CJQ0正常启动,但是Job仍然不执行。

5.没办法了...

继续研究...居然发现Oralce有这样一个bug

1. Clear description of the problem encountered:
slgcsf() / slgcs() on Solaris will stop incrementing after
497 days 2 hrs 28 mins (approx) machine uptime.

2. Pertinent configuration information
No special configuration other than long machine uptime. .

3. Indication of the frequency and predictability of the problem
100% but only after 497 days.

4. Sequence of events leading to the problem
If the
gethrtime() OS call returns a value > 42949672950000000
nanoseconds then slgcs() stays at 0xffffffff. This can
cause some problems in parts of the code which rely on
slgcs() to keep moving.
eg: In kkjssrh() does "now = slgcs(&se)" and compares that
to a previous timestamp. After 497 days uptime slgcs()
keeps returning 0xffffffff so "now - kkjlsrt" will
always return 0. .

5. Technical impact on the customer. Include persistent after effects.
In this case DBMS JOBS stopped running after 497 days uptime.
Other symptoms could occur in various places in the code.

好么,原来是计时器溢出了,一检查我的主机:

bash-2.03$ uptime
 10:00pm  up 500 day(s), 14:57,  1 user,  load average: 1.31, 1.09, 1.08
bash-2.03$ date
Fri Nov 19 22:00:14 CST 2004

 

刚好到事发时是497天多一点.ft.

6.安排重起主机系统..

这个问题够郁闷的,NND,谁曾想Oracle这都成...

Oracle最后声称:

fix made it into 9.2.0.6 patchset

在Solaris上的9206尚未发布...晕.

好了,就当是个经历吧,如果有问题非常不可思议的话,那么大胆怀疑Oracle吧,是Bug,可能就是Bug。

重起以后问题解决,状态如下:


$ sqlplus "/ as sysdba"

SQL*Plus: Release 9.2.0.3.0 - Production on Fri Nov 26 09:21:21 2004

Copyright (c) 1982, 2002, Oracle Corporation.  All rights reserved.

Connected to:
Oracle9i Enterprise Edition Release 9.2.0.3.0 - Production
With the Partitioning, OLAP and Oracle Data Mining options
JServer Release 9.2.0.3.0 - Production

SQL> select job,last_date,last_sec,next_date,next_sec from user_jobs;

       JOB LAST_DATE LAST_SEC         NEXT_DATE NEXT_SEC
---------- --------- ---------------- --------- ----------------
        70 26-NOV-04 09:21:04         26-NOV-04 09:26:00

SQL> /

       JOB LAST_DATE LAST_SEC         NEXT_DATE NEXT_SEC
---------- --------- ---------------- --------- ----------------
        70 26-NOV-04 09:26:01         26-NOV-04 09:31:00

SQL> 
SQL> select * from v$timer;

     HSECS
----------
   3388153

SQL> select * from v$timer;

     HSECS
----------
   3388319

SQL>       
                      

 

7.FAQ

一些朋友在Pub上问的问题
Q:对于不同平台,是否存在同样的问题?

A:对于不同平台,存在同样的问题
因为Oracle使用了标准C函数gethrtime
参考:
http://www.eygle.com/unix/Man.Page.Of.gethrtime.htm

使用了该函数的代码都会存在问题.

在Metalink Note:3427424.8 文档中,Oracle定义的平台影响为:Generic (all / most platforms affected)

Q.计数器溢出,看了看job 中基本都是1天左右执行一次,如果设置 3 天执行一次的 job , 是否出问题的uptime 应该是 497*3 之后呢 ?

A:不会

Oracle内部通过计时器来增进相对时间.
由于Oracle内部hrtime_t使用了32位计数

那么最大值也就是0xffffffff
0xffffffff = 4294967295

slgcs()是10亿分之一秒,溢出在42949672950000000这个点上.

注意,这里0xffffffff,达到这个值时,本来是无符号整型,现在变成了-1,那么这个值递增时,+1 = 0了。
时间就此停住了。

我写了一小段代码来验证这个内容,参考:

 

[oracle@jumper oracle]$ cat unsign.c
#include 
int main(void){
unsigned int num = 0xffffffff;

printf("num is %d bits long/n", sizeof(num) * 8);
printf("num = 0x%x/n", num);
printf("num + 1 = 0x%x/n", num + 1);

return 0;
}

[oracle@jumper oracle]$ gcc -o unsign.sh unsign.c
[oracle@jumper oracle]$ ./unsign.sh
num is 32 bits long
num = 0xffffffff
num + 1 = 0x0
[oracle@jumper oracle]$

 


Q:内部时钟之一应该就是这个吧: v$timer 精确到1/100 秒的数据

没错!

注意前面说的:

4. Sequence of events leading to the problem
If the gethrtime() OS call returns a value > 42949672950000000
nanoseconds then slgcs() stays at 0xffffffff. This can
cause some problems in parts of the code which rely on
slgcs() to keep moving.

也就是说如果gethrtime() 操作系统调用返回值大于42949672950000000(单位10亿分之一秒)

也就是说Oracle将得到一个cs值为4294967295的时间值

而4294967295值就是0xffffffff

所以当时v$timer的计时也就是:

SQL> select * from v$timer;

     HSECS
----------
4294967295

SQL> /                   

     HSECS
----------
4294967295

SQL> /

     HSECS
----------
4294967295

SQL>

 

Oracle案例详细分析:Job任务停止执行 本文通过一次Oracle Job任务异常案例诊断,分析其原因及解决过程,从内部揭示Oracle Job任务调度及内部计时机制。 立即下载

相关推荐

记一次Nacos线程数飙升排查

Nacos线程飙升问题排查

叭嘣的博客 2631

在运行mvn解析ojdbc时报错process terminated解决方法

运行了这段代码后mvn:install-file -DgroupId=com.oracle -DartifactId=ojdbc6 -Dversion=11.2.0.1 -Dpackaging=jar -Dfile=C:\Users\Bedivere\Desktop\ojdbc6.jar 报错 我们点开后可以看到错误是缺少setting.xml 此时我们右键pom.xml 进行如下操作创建seetings.xml 再次运行 mvn:install-file -DgroupId=com.oracle

BedivereAlter的博客 900

双足肌肉骨骼机器人

Clone Alpha的技术突破标志着人类进入生物-机械融合的新纪元,但其影响远超技术范畴。从伦理框架重建(如拉马克进化算法中的知识传递机制)到经济模式革新(如UBI应对机器人失业潮),需全球协作制定前瞻性政策。若放任技术无序扩张,人类社会或将面临“能力断层”与“控制权丧失”的双重危机;反之,若以人类福祉为核心导向,仿生机器人亦可成为弥合残障歧视、提升整体文明层级的钥匙。当下选择,将决定人类究竟是技术的创造者,还是被重构的客体。

百态·数智思维 | 聚焦大数据、量化与未来AI 985

Oracle诊断案例-Job任务停止执行

Oracle诊断案例-Job任务停止执行Last Updated: Saturday, 2004-11-20 12:47 Eygle        昨天接到研发人员报告,数据库定时任务未正常执行,导致某些操作失败。开始介入处理该事故.系统环境:SunOS DB 5.8 Generic_108528-21 sun4u sparc SUNW,

eygle's life 2096

EVM算法的Python实现

EVM(Eulerian Video Magnification,欧拉视频放大或欧拉影像放大)是一种将视频中的微小变化进行放大的算法,正如论文标题所说《Eulerian Video Magnification for Revealing Subtle Changes in the World》,该算法可以将视频中的微小变化转变为肉眼可以

flyingzhao 1万+

TCGA数据下载保姆级教程:用GDC-client从零搞定,附配置文件避坑指南

本文提供TCGA数据下载的完整教程,详细讲解如何使用GDC-client工具从零开始配置到高效获取基因组数据。涵盖环境准备、认证配置、数据检索、高效下载及故障处理等关键步骤,并附配置文件避坑指南,帮助生物医学研究者快速掌握TCGA数据下载技巧。

weixin_30892037的博客 260

【11g】管理Oracle调度器Administering Oracle Scheduler

30Administering Oracle Scheduler In this chapter: Configuring Oracle Scheduler Monitoring and Managing the Scheduler Import/Export and the Scheduler Troubleshooting the Scheduler ...

viviliving的专栏 2049

【ComfyUI专栏】安装Triton组件

Triton是一款支持大模型推理的深度学习加速组件,最初仅支持Linux平台,现已通过开源社区适配Windows系统。针对SageAttention的安装,建议使用3.2.0Post10版本(该版本提供封装好的安装包,更高版本仅有源码)。用户可通过GitHub获取安装资源,或直接使用pip命令"pip install triton-windows"进行安装。安装时需注意:1)在虚拟环境中操作;2)使用管理员权限。相关资源链接已在文中提供。

技术与管理的平衡木- 1859

Oracle job不自动执行,手动可以执行

5)job_queue_processes取值范围为0到1000,总共可创建多少个job进程由job_queue_processes参数来决定。11)可以通过DBMS_SCHEDULER.SET_SCHEDULER_ATTRIBUTE来设置max_job_slave_processes。7)job_queue_processes参数的值为且DBMS_JOB与DBMS_SCHEDULER共享。8)job_queue_processes参数,当设定该值为0的时候则任意方式创建的job都不会运行。

s3721089的博客 1320

19、情境理论中的信息结构解析

本文系统解析了情境理论中的信息结构,从信息元(infon)的基本概念出发,深入探讨了关系结构与简单信息结构的构建方法,分析了标准信息结构所满足的一系列公理(如A1-A14),并阐述了角色、同一性、高阶信息、循环现象、参数适当性及信息元部分性等核心性质。通过具体示例和流程图展示了信息结构的构建过程,并对比了不同公理下的结构差异,最后讨论了该理论在与其他领域融合中的发展趋势及面临的挑战。

book8的博客 78

【ComfyUI】Wan2.2 动态服饰描述驱动换装图生视频

本文介绍了一个基于ComfyUI的Wan2.2动态服饰描述驱动换装工作流,能通过自然语言描述实现人物图像的自动换装并生成动态视频。该工作流结合多模态输入、语言模型驱动生成和视频合成技术,包含图像加载、文本解析(使用Qwen2.5大模型)、潜变量编码、视频帧采样与插值(RIFE VFI)等核心模块,最终通过VHS_VideoCombine输出流畅换装视频。整个流程无需手动干预,支持从"哥特风格"到"未来装甲"等多样化服饰风格的精确转换,通过文本节点控制50-100

Mr数据杨 2581

oracle11g数据库job不执行,Oracle job使用详解及job不运行的检查方法

每天1点执行的Oracle JOB样例DECLAREX NUMBER;BEGINSYS.DBMS_JOB.SUBMIT( job => X,what => 'ETL_RUN_D_Date;',next_date => to_date('2009-08-26 01:00:00','yyyy-mm-dd hh24:mi:ss'),interval => 'trunc(sysda...

weixin_29001419的博客 1483

反卷积通俗详细解析与nn.ConvTranspose2d重要参数解释

反卷积的作用 卷积中padding的几个概念 No Padding Half(Same) Padding Full Padding 反卷积 反卷积中的Padding参数 反卷积的stride参数 反卷积总结 参考资料

iioSnail的博客 2万+

oracle 11 job 不执行,Oracle Job 不执行

关于Oracle Job 不执行2008-11-11 19:48我们用的生产环境Job是可以正常执行的,但是在测试环境是不可以执行的在网上查了一下原因如下SQL> show parameter jobNAME TYPE VALUE------------------------------------ ------...

weixin_29505121的博客 213

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

oracle job不执行的分析处理

步骤: 1)查看last date、next date/failure次数、broken,分析是否因为job执行的存储过程异常或产生了死锁,导致job多次运行失败,最终被自动broken掉,通常数据库开发中大多数问题都是这个原因导致的。通过下面的语句查看job的运行情况: SELECT * FROM DBA_JOBS ORDER BY JOB;   2)通过以上分析,仍无头绪,很有可能是S

小羊快跑的专栏 3636

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

oracle job不执行的原因

那天在测试环境下想执行一个包内的存储过程,所以建了一个job,但是该job等了半天都没执行。最后 找到的原因有点低级,但是过程中涉及了一些知识所以在此记录下。 1.一开始查看了下参数为job_queue_processes为5,环境下也没有其他job在跑; 2.随后想看下手动调job能不能成功,执行dbms_job.run()语句还是没能执行job; 3.在网上苦寻原因看到又说是C

mrandy的专栏 2358

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

oracle 10 job任务不自动执行,解决办法

oracle 10 job任务不自动执行,我尝试了一下以下操作,job任务自动执行了。 首先设置这个=0ALTER SYSTEM SET JOB_QUEUE_PROCESSES = 0;  等个2~3分钟重新设置成=5 ALTER SYSTEM SET JOB_QUEUE_PROCESSES = 5;

djs00717的专栏 833

oracle job不自动执行,手动可以执行

解决方法: 用sysdba登录,执行show parameter job_queue_process看看结果是不是0 如果是这个原因,可以修改此参数 ALTER SYSTEM SET job_queue_processes = 100;   小结 1)job_queue_processes参数决定了job作业能够使用的总进程数。 2)当该参数为0值,任何job都不会被执行,建议合...

梦想 4235

Oracle job不执行问题的解决

先查看下job信息 select * from all_jobs; 没有创建job的话,就先创建job 再查看job进程信息 show parameter job_queue_process; 如果结果为0,说没Oracle没有为job分配进程,所以不会执行 ALTER SYSTEM SET JOB_QUEUE_PROCESSES = 5; 修改了job进程后,job就执...

章志强的专栏 4320

Oracle的Job不自动执行,但手动执行无任何的问题

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_33862514的博客 3137

Oracle计划任务JOB不自动执行的问题

Oracle任务JOB不自动执行的问题 showparameterjob 显示可以起动的任务进程的个数 如:显示的任务进程为0,所以不能自动执行任务 SQL> show parameter job NAME TYPE VALUE ---------...

weixin_33971205的博客 763

Oracle job不自动执行

修改 job_queue_processes 参数;SQL&gt; show parameter job; NAME TYPE ------------------------------------ ---------------------- VALUE ------------------------------ job_qu...

shenxian1021的专栏 1604

Oracle如何手工执行job,求助高手,JOB执行和手工执行执行结果不同,JOB执行不出来,手工却没问题...

求助:JOB执行异常,手工执行没问题。这个存储过程实现按相关维度聚集明细数据(按月);之后,从1月-12月,依次向上补充当期未发生数据(累计值补0) 。问题是,这个存储过程,手工执行没问题,每次通过JOB调用,执行到第二部补充数据的按月双层循环,就卡住了。卡在第一次循环,COMMIT总是不执行。试图跟踪SQL,但是总是跟踪不到,服务器没有标识的trace文件生成。跟踪SQL这个问题如果手工执行这个...

weixin_39633455的博客 469

oracle 11 job 不执行,oracle JOB 无法运行方法处理汇总

oracleJOB有时会没法运止,当一个JOB没法运止时,尾先经过以下思绪来查询,查看lastdate、nextdate/failure次数、broken,阐收是可由于job执止的存储过程同常或收死了死锁,导致job多次运止失败,最终被主动broken失踪,但凡是数据库开收中年夜大都成绩都是谁人缘故起因导致的。经过下里的语句查看job的运止环境:SELECTJOB,WHAT,LOG_US...

weixin_29251131的博客 1571

oracle schedule 不自动执行,dbms_scheduler_job 不能自动执行

这是个自动收集STATS的作业, 我重建了, 还是用MAINTENANCE_WINDOW_GROUP的计划. 但是看对象的统计信息并没有更新.SCHEDULER_JOB_LOG中也没有显示成功或失败. 没有记录.手动执行,EXEC DBMS_SCHEDULER.RUN_JOB ('GATHER_STATS_JOB'); 可以成功完成,exec DBMS_SCHEDULER.create...

weixin_35147304的博客 915
下一篇: DATABASE LINK
liveplus
博客等级 码龄18年 0粉丝 2原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值