job failures =16后 job 会broken


Broken Jobs and the Job Queue [ID 103349.1]

 修改时间 11-JUL-2012     类型 PROBLEM     状态 PUBLISHED 

***Checked for relevance on 11-Jul-2012***

NOTE:
=====
The discussed functionality is still available in Oracle 10g and Oracle 11g.
However, with Oracle 10gR1 the DBMS_SCHEDULER package was introduced with many new views. 
It is advised to use the new Oracle scheduler instead of old style Oracle jobs.
=====

The job queue is used to schedule the execution of a stored procedure at a 
specified timed interval.  This tool is the only way the database can be forced 
to perform a action more than once.


If you are receiving multiple ORA-12012 errors you should check for any broken jobs.  

  Error:  ORA 12012
  Text:   error on auto execute of job <num>
  ------- ------------------------------------------------------------------------
  Cause:  Some kind of error was caught while doing an automatic execute of a job.
  Action: Look at the accompanying errors for details on why the execute failed.


This can be done by executing the following SQL statement:

  SELECT JOB
  FROM DBA_JOBS
  WHERE BROKEN = 'Y';

  -or-

  SELECT FAILURES, JOB
  FROM DBA_JOBS;

If this statement returns a job with the number of failures set to 16 the job
has been broken.

Also, note the following:

  a) A job does not have to have failures = 16 to be broken. (e.g. if you break
     the job manually, this does not set the # of failures to 16)

  b) A job can be broken and failures can be greater than 16.  (e.g. if the job
     automatically breaks after 16 failures and the job is manually run and fails
     again, the job will remain broken and failures will be incremented to 17).


Once a job is broken it no longer will be executed by the database.  If a job 
returns an error while Oracle is attempting to execute it, Oracle tries to 
execute it again. The first attempt is made after one minute, the second 
attempt after two minutes, the third after four minutes, and so on, with the 
interval doubling between each attempt. If the job fails 16 times, Oracle 
automatically marks the job as broken and no longer tries to execute it. 
However, between attempts, you have the opportunity to correct the problem 
that is preventing the job from running. This will not disturb the retry 
cycle, and Oracle will eventually attempt to run the job again.

There are two ways to unbreak a broken job:

  1. EXECUTE DBMS_JOB.RUN(JOB NUMBER);

     Example:
       EXECUTE DBMS_JOB.RUN(10);

     This statement will force job 10 to execute immediately.  If this is 
     successful the job will complete and reset failures to 0.  This would
     then flag the job as being unbroken.

  2. EXECUTE DBMS_JOB.BROKEN
     (JOB    => <job_number>,
     BROKEN => <true|false>)

     Example:
       EXECUTE DBMS_JOB.BROKEN(
       JOB    => 10,
       BROKEN => FALSE);

     The execution of this statement would unbreak job 10.

If the execution of either one of these procedures returns an error saying that
the specified job can not be found have the client log in as the owner of the 
job and then attempt the statement again.  The owner of the job is the same as 
the person who submitted the job.


Finally, you should always check the alert.log for any accompanying error 
messages along with looking in the background_dump_dest directory for any
generated SNP trace files.

References

NOTE:1268716.1 - Master Note - DBMS_SCHEDULER and DBMS_JOB

显示相关信息 相关内容


产品
  • Oracle Database Products > Oracle Database > Oracle Database > Oracle Server - Enterprise Edition
错误
12012 ERROR; ORA-12012

返回页首返回页首


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值