I'm looking for a script which disables all the jobs. Right now I highlight them all in Toad, click the take offline button and then commit changes. There has to be a way to do this in PL/SQL.
Script to disable all jobs in Oracle (DBMS_JOB package)?
57.7k Views Asked by Cade Roux At
4
There are 4 best solutions below
0

== For dbms_job jobs:
alter system set job_queue_processes=0 scope=both;
For some maintenance may be better/ You may normally want to have some jobs offline and don't want to put them online when you'll be done with maintenance.
== For dbms_scheduler jobs:
exec dbms_scheduler.set_scheduler_attribute('SCHEDULER_DISABLED','TRUE');
and after maintenance is complete:
exec dbms_scheduler.set_scheduler_attribute('SCHEDULER_DISABLED','FALSE');
0

DECLARE
CURSOR selection
IS SELECT job_name FROM dba_scheduler_jobs WHERE owner = '[username]';
--or make your own selection here
BEGIN
FOR record IN selection
LOOP
dbms_scheduler.disable(record.job_name);
END LOOP;
END;
0

Please run the below query.
set head off
spool job_disable.sql
select 'execute dbms_scheduler.disable('||''''||owner||'.'||job_name||''''||');' from dba_scheduler_jobs where enabled='TRUE';
spool off;
@job_disable.sql
This will disable all the dbms jobs that are enabled.
You can modify the query to enable all the disabled too.
If you want to prevent all jobs from running, you can change the initialization parameter
JOB_QUEUE_PROCESSES
. If you set that to 0, Oracle won't run any jobs scheduled usingDBMS_JOB
.You could also mark the jobs broken
which will cause them not to be run (but will allow any jobs created after that point to run normally). To unbreak the jobs
will set all the jobs to run in 1 minute.