11. oktober 2001 - 15:17Der er
2 kommentarer og 2 løsninger
dbms_job
Med dbms_job.isummit kan man putte et job i Oracles scheduler og få det til at køre med intervaller.
Jeg har lavet følgende procedure:
procedure ZZZstart_job(jno BINARY_INTEGER) IS jobno BINARY_INTEGER; BEGIN jobno := jno; DBMS_JOB.ISUBMIT(jobno,\'ZZZINSERTJOBSCH;\', SYSDATE, \'SYSDATE + 10/86400\'); COMMIT; END;
som ligger et job i \'job queue\' og skulle starte hvert 10 sekunde. ZZZINSERTJOBSCH er en procedure som indsætter nogle rækker i en tabel. Proceduren ser således ud:
Procedure ZZZInsertJOBSCH is
V_ANTAL Number; Begin
for V_ANTAL in 1..3 loop
Insert Into ZZZTBLJOBSCH(Name) values (\'Test Linie nr. \' || V_ANTAL);
end loop; COMMIT; End;
Den bliver lagt i køen, men bliver ikke igangsat og begynder ikke at køre i intervaller. I next_sec bliver der insat et tidpunkt, men det er som at der er et eller andet som gør at jobscheduleren ikke fanger at der skal startes en kørsel.
Jeg vil nok sige at job_queue_interval = 5 er MEGET lavt.... Det betyder at job processen checker hvert 5. sekund for et job der skal køres. En normalt unødig belastning. Men hvis jobbet SKAL køre hvert 10. sekund, er det se\'fø\'li en nødvendighed.
Bemærk at du med job=10 sek og interval=5 sek i værste tilfælde så vil have et job der kører med 14 sek mellemrum ;-)
Sæt job_queue_processes til et højere tal end 1! Så vil du kunne håndtere flere jobs af gangen.
Iøvrigt behøver du ikke vende basen! Den kan sættes med alter system set job_queue_processes=5; Den vil se\'fø\'li så kun gælde til basen er blevet vendt, hvis du ikke sætter den i din init.ora!
Normalt tildeler jeg ikke jobnummer selv, men lader databasen om det!
var jobno number; EXEC DBMS_JOB.SUBMIT(:jobno,\'MY_PROCEDURE;\', SYSDATE, \'SYSDATE + 1/24\');
Jeg satte både processes og intervals op og det virker nu.
Tak for hjælpen
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.