Hi,This is Halim,working as a Sr. Oracle DBA and PL/SQL developer in Atlanta, USA. I very much like to play with SQL, PL/SQL and scripting languages along with my DBA job. I got a recognition for PL/SQL. Please see here at 16th position(http://plsql-challenge.blogspot.com/2010/07/winners-of-first-plsql-challenge.html). I am maintaining this blog for helping myself while in work and sharing my knowledge with others. If you have any question. you can reach me at infohalimdba@gmail.com Thanks.

Using OSWatcher is a good tool to get more evidence of this.oruse top/vmstat/prstat to check it.

Normally OSWatcher is taking snapshots every 30 seconds and in the above output it shows that several snapshots are missing. OSWatcher is using OS-commands like 'top' and 'vmstat'. So if they are having problems, than there is a serious problem on OS-level.

Another indication of the OS problems are the very high number of processes in the CPU Run and Blocked Q.

"unable to spawn jobq slave process" this message can be show fornot correct setting of JOB_QUEUE_PROCESSES .

How to determine the correct setting for JOB_QUEUE_PROCESSES============================================================

Solution==============

The ideal setting for JOB_QUEUE_PROCESSES should be set to the maximum number of jobs that would ever be run concurrently on a system PLUS a few more.

1) Initially set JOB_QUEUE_PROCESSES higher than the most number of jobs that could ever run concurrently

Be careful not to set this too high as it can effect database performance or even exhaust OS resources

A fair estimate can be done by looking at DBA_JOBS ... NEXT_DATE and NEXT_SEC columns

The reason that this is a fair estimate is the JOB SCHEDULER submits one time execute jobs to the queuefor execution when it chooses to run a job ... so it is possible that the above estimate would be a good bitoff ... Example ... Running or UTLRP.sql ... on a system with multiple CPU's ... will cause he SCHEDULERto submit multiple jobs ... at the same time ... to the job queue

NOTE: Add one more to your estimate for the job that will be created below

NOTE : The example above uses a 5 minute interval (5/1440) ... this can be adjusted as needed

e) Monitor MAX_CONCURRENT_JOBS

SELECT MAX(JOBS_RUNNING) FROM MAX_CONCURRENT_JOBS;

The length of time for monitoring depends on the INTERVAL in the job queue for ALL jobs ... It is recommended that at least two (2) executions of every job in the job queue be monitored with this process

3) Set JOB_QUEUE_PROCESSES to the appropriate setting

ALTER SYSTEM SET JOB_QUEUE_PROCESSES = SCOPE = ...

4) Remove the monitoring system

SELECT JOB FROM DBA_JOBS WHERE WHAT='MAX_CONCURRENT_JOBS_MONITOR;';

EXEC DBMS_JOB.REMOVE();

DROP PROCEDURE MAX_CONCURRENT_JOBS_MONITOR;

DROP TABLE MAX_CONCURRENT_JOBS;

NOTE : this process needs to be done periodically ... especially if new jobs are being added to the job queue