[Oracle] Procedure / Function zu bestimmter Zeit starten

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • [Oracle] Procedure / Function zu bestimmter Zeit starten

    Oracle Version: 9.2.0.4.0

    Weiß jemand, wie ich mit einer Oracle Datenbank eine Function oder Procedure zu einer bestimmten Zeit ausführen kann ?

    eine Möglichkeit wäre, per Batch ein sql-file (SQL/Plus) abarbeiten zu lassen, wollte aber mal fragen, ob es evtl. die Möglichkeit gibt, direkt in der Datenbank zu sagen, starte Function/Procedure zu Zeitpunkt X/Y

    gruss

  • #2
    Re: [Oracle] Procedure / Function zu bestimmter Zeit starten

    Ohne Ahnung von Oracle zu haben, bringt mich kurzes googlen zu der Vermutung, dass DBMS_SCHEDULER dein Stichwort sein könnte.
    I don't believe in rebirth. Actually, I never did in my whole lives.

    Kommentar


    • #3
      http://www.ordix.de/onews2/1_2005/si...steuerung.html
      Geht auch mit DBMS_JOB, den Scheduler kenne ich leider noch nicht. Ist ja soweit ich dies gesehen habe erst ab der Version 10 vorhanden...

      >> Tipps des Monats April 2002

      Wie kann man einen Job ohne Hilfe eines Tools einrichten?

      Sie wollen, dass bestimmte Prozeduren zu vorgegebenen Zeiten ablaufen? Dann müssen Sie einen Job in der Datenbank einrichten.

      Zunächst einmal müssen Sie die Voraussetzung schaffen, damit ein Job überhaupt je ausgeführt werden kann: Es muss mindestens einen SNP-Prozess geben, der die Ausführung übernimmt. Setzen Sie dazu den init.ora-Parameter JOB_QUEUE_PROCESSES auf einen Wert > 0, die maximale Anzahl ist bis Version 8.1.7 36 Prozesse, ab Version 9i 1000. Wenn Sie die Datenbank nicht sofort durchstarten wollen oder können, so können Sie diesen Parameter auch im laufenden Betrieb umstellen mit:

      ALTER SYSTEM SET JOB_QUEUE_PROCESSES = 1;

      Zusätzlich können Sie bis Version 8.1.7 mit dem init.ora-Parameter JOB_QUEUE_INTERVAL einstellen, wie häufig diese Prozesse "aufwachen" sollen, um zu kontrollieren, ob es Arbeit für sie gibt. Der Default ist 60 (Sekunden); JOB_QUEUE_INTERVAL kann nur über ein Durchstarten der Datenbank neu gesetzt werden, nicht mit ALTER SYSTEM. Ab Version 9i wird dieser Parameter nicht mehr unterstützt.

      Nun können Sie Ihre Jobs einrichten. Das geschieht mit der Prozedur DBMS_JOB.SUBMIT. An diese müssen Sie (neben einer OUT-Variablen für die Jobnummer) übergeben, was ausgeführt werden soll, wann es erstmals ausgeführt werden soll, und in welchem Intervall es ausgeführt werden soll. Optional können Sie noch angeben, wann Ihre Angaben geparst werden sollen, der Default ist sofort:

      DBMS_JOB.SUBMIT(
      job OUT BINARY_INTEGER,
      what IN VARCHAR2,
      next_date IN DATE,
      interval IN VARCHAR2 DEFAUL 'null',
      no_parse IN BOOLEAN DEFAULT FALSE
      );

      Achten Sie darauf, dass die Angabe der erstmaligen Ausführung vom Datentyp DATE ist, die Angabe des Intervalls dagegen vom Datetyp VARCHAR2! Ihr "what" muss mit einem Semikolon abgeschlossen werden.
      Wird kein Intervall angegeben, so wird der Job einmalig ausgeführt und dann aus der Datenbank entfernt. Damit der Job auch wirklich eingerichtet wird, muss hinterher ein COMMIT abgesetzt werden!

      Beispiel: Die Prozedur test_proc soll sofort und danach täglich um 4 Uhr ausgeführt werden:

      DECLARE
      v_jobno BINARY_INTEGER;
      BEGIN
      DBMS_JOB.SUBMIT(v_jobno,
      'test_proc;',
      SYSDATE,
      'TRUNC(SYSDATE) + 1 + 4/24');
      COMMIT;
      END;

      Angaben zu allen Jobs finden Sie in der DD-View DBA_JOBS; zu allen Jobs, die im Moment gerade ausgeführt werden, finden Sie zusätzliche Informationen in DBA_JOBS_RUNNING.

      Quelle: http://www.muniqsoft.de/tipps/monats...tipps_2002.htm
      mfg
      Günni


      Praxis: Jeder kann´s, aber keiner weiß wie´s geht...
      Theorie: Jeder weiß wie´s geht, aber keiner kann´s ...
      Microsoft vereint Praxis und Theorie: Nix geht und keiner weiß warum
      City-Tiger - Online durch die Straßen tigern...

      Kommentar


      • #4
        Original geschrieben von Günni
        Geht auch mit DBMS_JOB, den Scheduler kenne ich leider noch nicht. Ist ja soweit ich dies gesehen habe erst ab der Version 10 vorhanden...
        Ich hatte auch zuerst DBMS_JOB gefunden, und dann auf einer weiteren Seite aber noch, dass der Scheduler dieses ablösen sollte und auch mehr kann. Auf die Versionen hab ich nicht geachtet :-)
        I don't believe in rebirth. Actually, I never did in my whole lives.

        Kommentar


        • #5
          Dann ist es ja vielleicht nicht schlecht das ich dies noch erwähnt habe ;o)
          mfg
          Günni


          Praxis: Jeder kann´s, aber keiner weiß wie´s geht...
          Theorie: Jeder weiß wie´s geht, aber keiner kann´s ...
          Microsoft vereint Praxis und Theorie: Nix geht und keiner weiß warum
          City-Tiger - Online durch die Straßen tigern...

          Kommentar

          Lädt...
          X