Oracle JOB问题解决汇总

原创 2007年09月26日 09:41:00

一。job的运行频率设置

1.每天固定时间运行,比如早上8:10分钟:Trunc(Sysdate+1) + (8*60+10)/24*60

2.Toad中提供的:

每天:trunc(sysdate+1)

每周:trunc(sysdate+7)

每月:trunc(sysdate+30)

每个星期日:next_day(trunc(sysdate),'SUNDAY')

每天6点:trunc(sysdate+1)+6/24

半个小时:sysdate+30/1440

3.每个小时的第15分钟运行,比如:8:15,9:15,10:15...:trunc(sysdate,'hh')+75/1440。原先我设置的是trunc(sysdate,'hh')+15/1440,发现居然不行。

二。JOB为什么不运行?

1.先来了解一下JOB的参数说明:与job相关的参数一个是job_queue_processes,这个是运行JOB时候所起的进程数,当然系统里面JOB大于这个数值后,就会有排队等候的,最小值是0,表示不运行JOB,最大值是36,在OS上对应的进程时SNPn,9i以后OS上管理JOB的进程叫CJQn。可以使用下面这个SQL确定目前有几个SNP/CJQ在运行。

select * from v$bgprocess,这个paddr不为空的snp/cjq进程就是目前空闲的进程,有的表示正在工作的进程。

另外一个是job_queue_interval,范围在1--3600之间,单位是秒,这个是唤醒JOB的process,因为每次snp运行完他就休息了,需要定期唤醒他,这个值不能太小,太小会影响数据库的性能。

2.诊断:先确定上面这两个参数设置是否正确,正确了继续向下

3.使用下面的SQL察看JOB的的broken,last_date和next_date,last_date是指最近一次job运行成功的时间,next_date是根据设置的频率计算的下次执行时间,根据这个信息就可以判断JOB上次是否正常,还可以判断下次的时间对不对

select * from dba_jobs

有时候我们发现他的next_date是4000年1月1日,说明job要不就是在running,要不就是break(broken=Y),如果还在running,可以继续向下,如果是broken,最好和当事人了解一下,确定不能broken,那就把broken值修改成N,SQL如下:

 declare

BEGIN

DBMS_JOB.BROKEN(<JOB_ID>,FALSE);

END;

4.使用下面的SQL查询是否JOB还在Running

select * from dba_jobs_running

当然,如果不应该run那么久的话,就要查原因了,一般的JOB running时会锁定相关的相关的资源,可以查看一下v$access和v$locked_object这两个view,如果发现其他进程锁定了与JOB相关的Object,那么就要把其他进程删除,有必要的话,把JOB的进程也删除,再重新跑。

5.如果上面都正常,但是JOB还不run,怎么办?那我们要考虑把JOB进程重启一次,防止是SNP进程死了造成JOB不跑,指令如下:

alter system set job_queue_processes=0 --关闭job进程,等待5--10秒钟

alter system set job_quene_processes=5 --恢复原来的值
6.Oracle的BUG

Oracle9i里面有一个BUG,当计数器到497天时,刚好达到它的最大值,再向计数就会变成-1,继续加一就变成0了,如果碰到这种情况就得重启数据库,我们这边有一个生产型的数据库版本是9205,就发生过这样一次问题,后来和用户约时间重启后就没问题了。但是其他的7345和8i的数据库没有发现这个问题。

7.那当然了,数据库上原因大抵如此,那还需要配合用户察看一下是否是程序本身的问题,比如处理的资料量大,或者网络速度慢等造成运行时过长,那就需要具体情况具体分析了。可以通过下面的SQL手工执行一下JOB看看:

declare

begin

dbms_job.run(<job>_ID)

end; 

相关文章推荐

oracle创建job并执行job及JOB问题解决汇总

1、首先job要在command命令下执行才有效  DECLARE X NUMBER; BEGIN SYS.DBMS_JOB.SUBMIT ( job => X ,what =>...

oracle安装中的问题解决

  • 2013年07月21日 23:04
  • 1KB
  • 下载

Oracle exp imp 常见问题解决

exp imp

oracle数据库01033问题解决方法

  • 2014年06月26日 20:59
  • 2KB
  • 下载

用Excel导入Oracle数据库中时候 提示在指定的DSN中,驱动程序和应用程序之间的体系结构不匹配 问题解决!!!

在指定的DSN中,驱动程序和应用程序之间的体系结构不匹配 今天在使用plsql通过odbc导入excel数据时发生了一个错误,截图如下: 错...

Window XP安装oracle11gR2数据库先决条件检查的问题解决(实测有效)

XP安装11G数据库时进行到先决条件检测时出现以下问题:   1:物理内存 - 此先决条件将测试系统物理内存总量是否至少为 922MB (944128.0KB) 预期值 ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Oracle JOB问题解决汇总
举报原因:
原因补充:

(最多只允许输入30个字)