ORACLE有一种定时调度机制,用dbms_job包来管理。
设置的JOB就是不运行,搞得的郁闷,
最好执行了这个才搞定 exec
dbms_ijob.set_enabled(true);
下面提供一个checklist用于检查job异常的原因:
1) Instance
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 system disable restricted session;
^–
Checked!
2) JOB_QUEUE_PROCESSES=0
Make sure that job_queue_processes
is > 0
show parameter job_queue_processes
^– Checked!
3)
_SYSTEM_TRIG_ENABLED=FALSE
Check if _system_enabled_trigger=false
col
parameter format 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’;
If _system_trig_enabled=false,
then
alter system set “_system_trig_enabled”=TRUE scope=both;
^–
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
job COMMITted?
Make sure a commit 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/2005 09: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 server (machine) has
been up for more than 497 days:
For SUN, use ‘uptime’ OS command.
If
uptime>497 and the jobs do not execute automatically, then you are hitting
unpublished 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.
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 set 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
Stop and restart CJQ process(es)
alter system set
job_queue_processes=0 ;
–
alter system set job_queue_processes=4 ;
Ref: Bug 2649244
(fixed by: 9015, 9203, 10201)
^– Done but did not help
11)
DBMS_IJOB(Non-documented):
Last ditch effort.
Either restart the
database or try the following:
exec dbms_ijob.set_enabled(true);
Ref:
Bug 3505718 (Closed, Not a Bug)
Done but did not help
These are the
most common causes for this behavior.
Solution
The solution ended up
to be the server (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.
from
metalink docs : 313102.1
阅读(3304) | 评论(0) | 转发(0) |