from :https://community.oracle.com/thread/648581

This is one of the most common Scheduler questions asked.

Here we list some of the common problems and their solutions.



1) job_queue_processes may be too low (this is the most common problem)

The value of job_queue_processes limits the total number of dbms_scheduler

and dbms_job jobs that can be running at a given time.

To check whether this is the case check the current value of

job_queue_processes with

SQL> select value from v$parameter where name='job_queue_processes';

Then check the number of running jobs

SQL> select count(*) from dba_scheduler_running_jobs;

SQL> select count(*) from dba_jobs_running;



If this is the problem you can increase the parameter using

SQL> alter system set job_queue_processes=1000;



2) max_job_slave_processes may be too low

If this parameter is not NULL then it limits how many dbms_scheduler jobs can

be running at a time. To check whether this is the problem, check the current

value using

SQL> select value from dba_scheduler_global_attribute

where attribute_name='MAX_JOB_SLAVE_PROCESSES';

Then check the number of running jobs

SQL> select count(*) from dba_scheduler_running_jobs;



If this is the problem you can increase the number or just NULL it out using

SQL> exec dbms_scheduler.set_scheduler_attribute('max_job_slave_processes',null)



3) sessions may be too low

This parameter limits the number of sessions at any time. Every Scheduler job

requires 2 sessions. To check whether this is the problem, check the current

valule using

SQL> select value from v$parameter where name='sessions';

Then check the current number of sessions using

SQL> select count(*) from v$session ;



If the numbers are too close you can increase the maximum using

SQL> alter system set job_queue_processes=200;



4) Have you recently applied a timezone update patch or upgraded the database

to a version with newer timezone information ? If you skipped any steps when

updating the timezone information, jobs may not run. To check whether this

is the case try doing

SQL> select * from sys.scheduler$_job;

and

SQL> select * from sys.scheduler$_window;

and make sure they finish without errors.



If it throws a timezone warning, reapply the upgrade or

timezone patch making sure to follow all the steps.



5) Is the database running in restricted mode ?

If the database is running in restricted mode then no jobs will run (unless

you are using 11g and use the ALLOW_RUNS_IN_RESTRICTED_MODE attribute).

To check this use

SQL> select logins from v$instance ;



If logins is restricted you can disable the restricted mode using

SQL> ALTER SYSTEM DISABLE RESTRICTED SESSION;



6) Is the job scheduled to run on an instance which is down ?



You can check this by seeing whether instance_id is set for the job
(check the dba_scheduler_jobs view), and if so you should check whether
that instance is up.



7) Is the job scheduled to run on a service which has not been started on any instances ?



You can check this by checking what job_class a job points to and then
checking whether that class points to a service. If it does, make sure
the service has been started on at least one running instance. You can
start a service on an instance using dbms_service.start_service.



8) Is the Resource Manager in effect with a restrictive resource plan ?



If a restrictive resource plan is in effect, scheduler jobs may not have
sufficient resources allocated so they may not run. You can check what
resource plan is in effect by doing



SQL> select name from V$RSRC_PLAN ;



If no plan is in effect or the plan in effect is INTERNAL_PLAN then the
resource manager is not in effect. If the resource manager is in effect
you can disable it by doing



SQL>alter system set resource_manager_plan = '';





9) Has the Scheduler been disabled ? This is not a supported action

but it is possible that someone has done it anyway. To check this do

SQL> select value from dba_scheduler_global_attribute where attribute_name='SCHEDULER_DISABLED'



If this query returns TRUE then you can fix this using

SQL> exec dbms_scheduler.set_scheduler_attribute('scheduler_disabled','false');



Reasons why jobs may run late



1) The first thing to check is the timezone that the job is scheduled with

SQL> select owner, job_name, next_run_date from dba_scheduler_jobs ;



If the jobs are in the wrong timezone they may not run at the expected

time. If the next_run_date is using an absolute timezone offset (like

+08:00) instead of a named timezone (like US/PACIFIC) then the jobs may not

run as expected if daylight savings is in effect - they may run an hour

early or late.



2) It may be that at the time the job was scheduled to run, one of the several

limits above may have been temporarily reached causing the job to be delayed.

Check if the limits above are high enough and if possible check them during

the time that the job is being delayed.



3) One possible reason that one of the above limits may be hit is that a

maintenance window may have come into effect. Maintenance windows are Oracle

Scheduler windows that belong to the window group named

MAINTENANCE_WINDOW_GROUP. During a scheduled maintenance window, several

maintenance tasks are run using jobs. This may cause one of the limits listed

above to be hit and user jobs to be delayed. See the admin guide for more info

about this (chapter 24).



To get a list of maintenance windows use

SQL> select * from dba_scheduler_wingroup_members;



To see when the windows run use

SQL> select * from dba_scheduler_windows;



To fix this you can either increase the limits or reschedule the maintenance

windows to run at more convenient times.



Diagnosing other Problems



If none of this works, here are some further steps you can take to try to

figure out what is going on.



1) Check whether there are any errors in the alert log. If the database is

having trouble allocating memory or has run out of disk space or any other

catastrophic errors have occurred, you should resolve those first. You can

find the location of the alert log by using

SQL> select value from v$parameter where name = 'background_dump_dest';

The alert log will be in this directory with a name starting with "alert".



2) Check whether if a job coordinator trace file and if it does, check if it

contains any errors. If this exists, it will be located in the

'background_dump_dest' directory which you can find as above and will look

something like SID-cjq0_nnnn.trc . If there are any errors here they may

hint at why jobs are not running.



3) If either of the above indicates that the SYSAUX
tablespace (where the scheduler stores its logging tables) is full, you
can use the dbms_scheduler.purge_log procedure to clear out old log
entries.



4) See if there is a window currently open. If there is, you can try closing it to see if that helps .

SQL> select * from DBA_SCHEDULER_GLOBAL_ATTRIBUTE where

attribute_name='CURRENT_OPEN_WINDOW';

SQL> exec DBMS_SCHEDULER.close_window ('WEEKNIGHT_WINDOW');



5)try running a simple run-once job and see if it runs

SQL>begin

dbms_scheduler.create_job (

job_name => 'test_job',

job_type => 'plsql_block',

job_action => 'null;',

enabled => true);

end;

/

SQL> -- wait a while

SQL> select * from user_scheduler_job_run_details where job_name='TEST_JOB';



6) If a simple run-once job doesn't run, you can try restarting the scheduler as follows.



SQL> exec dbms_scheduler.set_scheduler_attribute('SCHEDULER_DISABLED', 'TRUE');

SQL> alter system set job_queue_processes=0;

SQL> exec dbms_ijob.set_enabled(FALSE);

SQL>

SQL> alter system flush shared_pool;

SQL> alter system flush shared_pool;

SQL>

SQL> exec dbms_ijob.set_enabled(TRUE);

SQL> alter system set job_queue_processes=99;

SQL> exec dbms_scheduler.set_scheduler_attribute('SCHEDULER_DISABLED', 'FALSE');

Answers to "Why are my jobs not running?"的更多相关文章

  1. & fg jobs bg

    & 执行程序的后面加&可以将程序转到后台(这个后台是当前会话的后台,并不是守护进程)执行,即$./a.out &,这样我们在打开诸如$gedit test.txt的时候可以写成 ...

  2. Managing linux Shell Jobs

    Managing Shell Jobs   When moving jobs between the foreground and background, it may be useful to ha ...

  3. nohup命令与&区别,jobs,fg,bg,Ctrl-Z、Ctrl-C、Ctrl-D

    &方式: Unix/Linux下一般想让某个程序在后台运行,很多都是使用 & 在程序结尾来让程序自动运行.比如我们要运行mysql在后台:          /usr/local/my ...

  4. linux fg bg ctrl + z jobs & 等命令

    fg.bg.jobs.&.ctrl + z都是跟系统任务有关的,虽然现在基本上不怎么需要用到这些命令,但学会了也是很实用的一.& 最经常被用到这个用在一个命令的最后,可以把这个命令放到 ...

  5. Linux scp 设置nohup后台运行

    Linux scp 设置nohup后台运行 1.正常执行scp命令 2.输入ctrl + z 暂停任务 3.bg将其放入后台 4.disown -h 将这个作业忽略HUP信号 5.测试会话中断,任务继 ...

  6. Hadoop-1.2.1 升级到Hadoop-2.6.0 HA

      Hadoop-1.2.1到Hadoop-2.6.0升级指南   作者 陈雪冰 修改日期 2015-04-24 版本 1.0     本文以hadoop-1.2.1升级到hadoop-2.6.0 Z ...

  7. Linux 任务控制

    Linux/Unix 提供了不同与 windows 的多任务处理,也提供一套用来切换前后台任务的命令 bg fg & Ctrl+z nohup sitsid Ctrl-Z 挂起程序 user@ ...

  8. 16061701(地图灯光编译Beast报错)

    [目标] 地图灯光编译报错 [思路] 1 我自己测c2_cwd_rt 附件为当时log 2 ExampleGame\BeastCache\PersistentCache 3 重新删除掉BeastCac ...

  9. 2016-09-19: linux后台运行

    linux后台运行命令两种方式: 1. command & : 后台运行,你关掉终端会停止运行   2. nohup command & : 后台运行,你关掉终端也会继续运行 简介 L ...

随机推荐

  1. Node.js初探之实现能向前台返回东西的简单服务器

    nodejs nodejs文件就是一个简单的js文件. 在shell中运行 Step 1. 打开终端,进入这个js文件所在目#录 Step 2. 用 'node 文件名.js' 命令运行它即可. 用n ...

  2. python实现排序算法 时间复杂度、稳定性分析 冒泡排序、选择排序、插入排序、希尔排序

    说到排序算法,就不得不提时间复杂度和稳定性! 其实一直对稳定性不是很理解,今天研究python实现排序算法的时候突然有了新的体会,一定要记录下来 稳定性: 稳定性指的是 当排序碰到两个相等数的时候,他 ...

  3. Hadoop MR编程

    Hadoop开发job需要定一个Map/Reduce/Job(启动MR job,并传入参数信息),以下代码示例实现的功能: 1)将一个用逗号分割的文件,替换为“|”分割的文件: 2)对小文件合并,将文 ...

  4. 爬取IP

    import urllib.request import re def url_open(url): req = urllib.request.Request(url,headers={'User-A ...

  5. 基于vue2.0的一个系统

    前言 这是一个用vue做的单页面管理系统,这里只是介绍架子搭建思路 前端架构 沿用Vue全家桶系列开发,主要技术栈:vue2.x+vue-router+vuex+element-ui1.x+axios ...

  6. crypto必知必会

    crypto必知必会 最近参加了个ctf比赛,在i春秋,南邮方面刷了一些crypto密码学题目,从中也增长了不少知识,在此关于常见的密码学知识做个小总结! Base编码 Base编码中用的比较多的是b ...

  7. fiddler实现手机抓包

    对fiddler相关配置 1.允许fiddler捕获http协议,打开fiddler客户端,菜单框选择Tools->Options->HTTPS,勾选图中三项 2.允许远程连接,Tools ...

  8. 关于python 使用腾讯云OCR 通用印刷体识别

    腾讯的python SDK没有通用印刷体识别,所以参考了别人识别网上图片的方式:https://www.cnblogs.com/semishigure/p/7690789.html 但是咱们使用的基本 ...

  9. 在一个没有设置宽高的容器中,为什么设置position:absolute后就可以全屏显示了?

    此场景适用于移动端百分比布局,背景全屏显示. 在一个没有设置宽高的容器中设置背景,想要背景全屏显示,设置bcakground-size:100%;后还需设置position:absolut; 原因: ...

  10. 如何设计一款APP,才能吸引用户眼球

    有APP分析机构研究表明,人们每天耗费在手机和平板上的平均时长为158分钟,其中127分钟是耗费在各类APP中,而仅有31分钟是花费在浏览网页上.随着人们对互联网的依赖性越来越强,移动APP发展迅速已 ...