2011-04-07 17 views

cevap

11

, sen başlatma parametresi JOB_QUEUE_PROCESSES değiştirebilir. Bunu 0 olarak ayarlarsanız, Oracle DBMS_JOB kullanarak planlanan herhangi bir işi çalıştırmaz.

Kaçmalarına olmamak neden olacaktır (ancak bu noktadan sonra oluşturulan işler normal çalışmasına izin verecektir)

BEGIN 
    FOR x IN (SELECT * FROM user_jobs) 
    LOOP 
    dbms_job.broken(x.job, true); 
    END LOOP; 
END; 

kırık işleri de işaretlemek başladı. İşlerin tümünü 1 dakika içinde çalışacak şekilde ayarlayabilmesi için
BEGIN 
    FOR x IN (SELECT * FROM user_jobs) 
    LOOP 
    dbms_job.broken(x.job, false, SYSDATE + interval '1' minute); 
    END LOOP; 
END; 
. DBMS_JOB işler için

+1

Sadece bir artı kullanarak DBMS_JOB kendi kullanıcı için işler sınırlıdır ... tüm kullanıcılar işlerini devre dışı bırakmak istiyorsanız, yönetici olarak giriş ve 'dbms_ijob' kullanmalıdır. – ceinmart

6

==:

alter system set job_queue_processes=0 scope=both; 

bazı bakım için daha iyi olabilir/Normalde bazı işler çevrimdışı ve bitireceksin zaman çevrimiçi koymak istemiyorum olmasını isteyebilirsiniz bakım. DBMS_SCHEDULER işler için

==:

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

ve bakımdan sonra

tamamlandıktan:

exec dbms_scheduler.set_scheduler_attribute('SCHEDULER_DISABLED','FALSE'); 
0

aşağıda sorguyu çalıştırın.

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 

Bu, etkin olan tüm dbms işlerini devre dışı bırakır.

Sorgu de tüm engelli etkinleştirmek için değiştirebilirsiniz.