Chinaunix首页 | 论坛 | 博客
  • 博客访问: 4478106
  • 博文数量: 109
  • 博客积分: 10011
  • 博客等级: 上将
  • 技术积分: 2457
  • 用 户 组: 普通用户
  • 注册时间: 2006-10-18 19:04
文章分类

全部博文(109)

文章存档

2011年(1)

2010年(10)

2009年(36)

2008年(62)

我的朋友

分类: Oracle

2009-09-02 11:29:58

下面的文章对我很有帮助,也希望给大家有一些启发,因此转载在此处。
 

ORACLE JOB不能按预期执行的常见原因

作者: liouville,  出处:IT专家网论坛, 责任编辑: 陈子琪, 
2009-08-06 07:00
  最近在一个测试环境中建立物化视图远程同步环境,但是远程视图一直未按照预期的时间进行刷新。以至于一开始让我怀疑ONDEMAND与STARTWITHNEXTBY冲突。

  最近在一个测试环境中建立物化视图远程同步环境,但是远程视图一直未按照预期的时间进行刷新。以至于一开始让我怀疑ONDEMAND与STARTWITHNEXTBY冲突。但再三确认,发现是我的测试环境中ora_cjq0不存在,唉!开始怎么不往这方面去想呢,修改一下JOB_QUEUE_PROCESSES参数,一切恢复正常,突然发现ORACLE 方面的问题还不少,贴一篇METALINK文章,历数以前碰到的JOB失效的原因,无非以下几种:


  JobsNotExecuting Automatically文档ID:注释:313102.1
  Symptoms
  Jobs arenolonger executing automatically.
  Ifforced(execdbms_job.run();),theseexecutefine.
  Cause
  Tryingthemost common reasons why jobs don't execute automatically and as scheduled:


  1)  in RESTRICTED SESSIONS mode?
  Check if the instance is in restricted sessions mode:
  select instance_name,logins from v$instance;
  If logins=RESTRICTED, then:
  alter  disable restricted ;
  ^-- Checked!


  2) JOB_QUEUE_PROCESSES=0
  Make sure that job_queue_processes is > 0
  show  job_queue_processes
  ^-- Checked!


  3) _SYSTEM_TRIG_ENABLED=FALSE
  Check if _system_enabled_trigger=false
  col parameter  a25
  col value format a15
  select a.ksppinm parameter,b.ksppstvl value from x$ksppi a,x$ksppcv b
  Where a.indx=b.indx and ksppinm=’_system_trig_enabled’;
  ^-- Checked!


  4) Is the job BROKEN?
  select job,broken from dba_jobs where job=;
  If broken, then check the alert log and trace files to diagnose the issue.
  ^-- Checked! The job is not broken.


  5) Is the  COMMITted?
  Make sure a  is issued after submitting the job:
  DECLARE X NUMBER;
  BEGIN
  SYS.DBMS_JOB.SUBMIT
  (
  job => X
  ,what => 'dbms_utility.analyze_schema
  (''SCOTT'',''COMPUTE'',NULL,NULL,NULL);'
  ,next_date => to_date('08/06/200509:35:00','dd/mm/yyyy hh24:mi:ss')
  ,no_parse => FALSE
  );
  COMMIT;
  END;
  /
  If the job executes fine if forced (i.e., exec dbms_jobs.run();), then likely a commit
  is missing.
  ^-- Checked! The job is committed after submission.


  6) UPTIME > 497 days
  Check if the  (machine) has been up for more than 497 days:
  For SUN , use 'uptime' OS .
  If uptime>497 and the jobs do not execute automatically, then you are hitting bug 3427424
  (Jobs may stop running after 497 days uptime) which is fixed in 9206 and A102
  ^-- Checked! The server in this case has been up 126 days only


  7) DBA_JOBS_RUNNING
  Check dba_jobs_running to see if the job is still running:
  select * from dba_jobs_running;
  ^-- Checked! The job is not running.


  8) LAST_DATE and NEXT_DATE
  Check if the last_date and next_date for the job are proper:
  select Job,Next_date,Last_date from dba_jobs where job=;
  ^-- NEXT_DATE is porper, however LAST_DATE is null since the job never executes automatically.


  9) NEXT_DATE and INTERVAL
  Check if the Next_date is changing properly as per the interval  in dba_jobs:
  select Job,Interval,Next_date,Last_date from dba_jobs where job=;
  ^-- This is not possible since the job never gets executed automatically.

 


  10) Toggle value for JOB_QUEUE_PROCESSES
   job_queue_processes=0, wait some  and then and set it back to the original value:
  alter  set job_queue_processes=0 ;
  --
  alter system set job_queue_processes=4 ;
  Ref: Bug 2649244 (fixed by: 9015,9203,A000)
  ^-- Done but did not help


  11) DBMS_IJOB(Non-documented):
  Last ditch effort.
  Either restart the  or try the following:
  exec dbms_ijob.set_enabled(true);
  Ref: Bug 3505718 (Closed, Not a Bug)
  @Note 90989.1 (Using DBMS_IJOB) INTERNAL NOTE
  Done but did not help
  These are the most common causes for this behavior.
  Solution
  The solution ended up to be the  (machine) uptime.
  Even though it was up for only 126 days, after the server was rebooted all jobs were able to execute automatically.
  To implement the solution, please execute the following steps:
  1. Shutdown all applications, including databases.
  2. Shutdown the server (machine)
  3. Restart all applications, including databases.
  4. Check that jobs are executing automatically.

阅读(699) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~