Tüm işleri devre dışı bırakan bir komut dosyası arıyorum. Şu anda hepsini Toad'da vurgula, çevrimdışı al düğmesini tıklat ve sonra değişiklik yap. PL/SQL'de bunu yapmanın bir yolu olmalı. Çalışan tüm işleri engellemek istiyorsanızOracle (DBMS_JOB paketi) içindeki tüm işleri devre dışı bırakmak için komut dosyası mı?
5
A
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
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.
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