Avatar billede rmundt Nybegynder
09. oktober 2001 - 10:12 Der er 12 kommentarer og
1 løsning

Jobscheduler

Er der nogen som kender til en applikation man kan  starte PL/SQL-scripts eller SQL-sætninger igang med?

Hører et sådant program med til Oracle installationspakken eller er det noget man skal udvikle selv?

Grunden til at jeg spørger er at jeg skal kunne starte nogle batchkørsler på forskellige tidspunkter.

Jeg benytter Oracle 8.0.6
Avatar billede holdam Nybegynder
09. oktober 2001 - 10:13 #1
Prøv med dbms_job-pakken.
Avatar billede nosjns Nybegynder
09. oktober 2001 - 10:14 #2
Hvis du har windows kan du bruge AT (windows scheduler) til at kalde SQL*PLUS og dine jobs. Hvis du kører Linux/unix kan du bruge crontab.
Avatar billede ehf Nybegynder
09. oktober 2001 - 10:17 #3
Prøv med dbms_job.

Med denne kan periodisk eksekvere en pl/sql pakke.

Dokumentation på dbms_job kan du evt. finde på Metalink
http://support.oracle.co.uk/metalink/plsql/ml2_gui.startup
Avatar billede andy2003 Nybegynder
09. oktober 2001 - 11:17 #4
CREATE OR REPLACE procedure start_job
  jobno      BINARY_INTEGER;
BEGIN
  DBMS_JOB.SUBMIT(JOB  => jobno, WHAT => \'<procedure name>;\', NEXT_DATE => SYSDATE, INTERVAL  => NULL);
END;

Denne procedure starter et job <procedure name> lige med det samme. Husk at din database skal have sat følgende i init.ora JOB_QUEUE_PROCESSES = 1 (eller højere).
Avatar billede rmundt Nybegynder
09. oktober 2001 - 12:15 #5
Hvis jeg vil have kørslen til at starte om et minut, hvordan lægger jeg så 1 minut til SYSDATE?
Avatar billede rmundt Nybegynder
09. oktober 2001 - 12:17 #6
Jeg har ingen init.ora liggende, men jeg har en initorcl.ora - er det så den jeg skal opdatere?
Avatar billede andy2003 Nybegynder
09. oktober 2001 - 13:17 #7
jeps, that\'s the one.
Avatar billede andy2003 Nybegynder
09. oktober 2001 - 13:32 #8
sysdate+(1/24/60) giver sysdate + 1 minut
Avatar billede rmundt Nybegynder
09. oktober 2001 - 14:19 #9
Jeg har lavet nedenstående procedure hvor jeg aktiverer min dbms_job:

procedure ZZZstart_job(jno BINARY_INTEGER)  IS
  jobno      BINARY_INTEGER;
BEGIN
  jobno := jno;
  DBMS_JOB.SUBMIT(jobno,\'ZZZINSERTJOBSCH;\', trunc(SYSDATE)+(1/24/15) , NULL);
  COMMIT;
END;

ZZZINSERTJOBSCH ser ud som nedenstående:

Procedure ZZZInsertJOBSCH is

V_ANTAL Number;
Begin

    for V_ANTAL in 1..3 loop

        Insert Into ZZZTBLJOBSCH values (V_ANTAL,\'Test Linie nr. \' || V_ANTAL);

    end loop;

End;

Min tabel bliver ikke opdateret, hvilket den jo gerne skulle efter 15 sekunder.

Er der nogen som kan se hvorfor?
Avatar billede andy2003 Nybegynder
09. oktober 2001 - 14:38 #10
du mangler da vist en COMMIT;
Avatar billede rmundt Nybegynder
09. oktober 2001 - 14:42 #11
Godt set, men selv om jeg efterfølgende COMMIT\'er i SQL Plus bliver min tabel ikke opdateret.
Avatar billede rmundt Nybegynder
09. oktober 2001 - 14:43 #12
Skal man være DBA\'er for at kunne anvende dbms_job og den tilhørende procedurer og funktioner?
Avatar billede rmundt Nybegynder
09. oktober 2001 - 15:55 #13
Lige et spørgsmål mere:

Jeg har fundet ud af på Metalink at man kan komme ud for at et job ikke bliver startet før man har bouncet databasen.

Hvad betyder det og hvorledes gøres det?
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester