Announcement

Collapse
No announcement yet.

Stored Procedure - Ablaufverfolgung

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Stored Procedure - Ablaufverfolgung

    Hallo zusammen,

    ich lade über eine Stored Procedure eine grosse Menge Daten in meine ORACLE-DB. Aufgerufen wird die Procedure über ein externes PL/SQL-Script, welches wiederum über dein CMD-File gestartet wird (SQLPLUS user@db password @blabla.sql)

    Frage:
    da diese procedure sehr lange läuft, such ich nach einer möglichkeit, mir zb. alle 1000 datensätze eine meldung auf die konsole ausgeben zu lassen.
    hat jemand eine idee?

    Hinweis:
    DBMS_OUTPUT.PUT_LINE..... -Anweisungen bekomme ich erst nach ablauf der gesamten Procedure ausgegeben.

  • #2
    Hallo,

    mit dem Package DBMS_APPLICATION_INFO kann man innerhalb lange laufender Transaktionen entsprechende "Infos" setzen, die dann in den verschiedenen Views angezeigt werden.
    Möglich wäre also z.B. ein Aufruf von DBMS_APPLICATION_INFO.SET_SESSION_LONGOPS() aller 1000 Datensätze. Diese Infos sind dann in einer zweiten Session über die View V$SESSION_LONGOPS aufrufbar. Diese View kalkuliert aus den Werten sogar eine voraussichtliche Ablaufzeit.

    Gruß Falk
    Wenn du denkst du hast alle Bugs gefunden, dann ist das ein Bug in deiner Denksoftware.

    Quellcode ohne ein Mindestmaß an Formatierung sehe ich mir nicht an! Ich leiste keinen Privatsupport per Mail oder PN!

    Comment


    • #3
      hallo falk,

      vielen dank für deine info. ich werde das mal durchspielen und schauen, ob ich den gewünschten effekt erziele und weiß, was meine procedur macht.

      r.

      Comment


      • #4
        Ablaufverfolgung in PL/SQL-Block

        guten morgen,
        hatte vor einiger zeit schonmal eine ähnliches thema. bin aber seinerzeit nicht recht weiter gekommen. deshalb nochmal dieses thema neu.

        ich lasse einen pl/sql-block laufen aus sqlplus heraus. dieser block läuft recht lange. ich lasse mir nun per "dbms_output.put_line" an gewissen stellen des laufes zähler oder andere verarbeitungsinfos ausgeben.

        leider sehe ich diese infos erst, wenn der bloch FERTIG durchgelaufen ist.
        gibt es eine möglichkeit, das ich zum zeitpunkt der ausgabe diese dann auch sofort sehe?

        Comment


        • #5
          Warum machst du dann einen neuen Thread auf ?

          http://entwickler-forum.de/showthread.php?t=46962

          Wie schon im anderen Thread erwähnt wurde, kannst du DBMS_APPLICATION_INFO verwenden.
          Eine andere Möglichkeit ist, wenn du eine Logtabelle während der Beladung befüllst.
          (Achte auf das Commit, damit du den Fortschritt beobachten kannst)

          Du kannst somit die Logtabelle (Beispiel Columsn: DATE, LOGINFO)mit Informationen zum Mitverfolgen des Fortschritts verwenden.

          morlogg

          Comment


          • #6
            Originally posted by morlogg View Post
            Warum machst du dann einen neuen Thread auf ?
            Hab ich mich auch gefragt, deßhalb hab ich es wieder zusammengeführt.

            Gruß Falk
            Wenn du denkst du hast alle Bugs gefunden, dann ist das ein Bug in deiner Denksoftware.

            Quellcode ohne ein Mindestmaß an Formatierung sehe ich mir nicht an! Ich leiste keinen Privatsupport per Mail oder PN!

            Comment


            • #7
              ...danke für die zusammenlegung. habt natürlich recht damit.

              so, das mit der sog. LONGOPS-verfolgung ist ja schonmal nicht schlecht.
              funktioniert auch - manuell.
              ich starte die langlaufende prozedur und kann dann in einer anderen session den fortlauf beobachten.

              mein problem geht mehr in folgende richtung.
              ich starte in einem web-frontend über ein shell-script die oracle-prozedur.
              von diesem moment an sehe ich nicht mehr was passiert, weil ja entsprechende anweisungen erst nach ende der prozedur ausgegeben werden.

              ich müsste also irgendetwas haben, was in regelmässigem turnus das entsprechende view der db abfragt und eine meldung am monitor ausgibt.

              viell. hat ja jemand schonmal sowas entwickelt.

              Comment


              • #8
                das ist doch ein Problem deines web-frontend. Das muß doch so angepasst werden, dass es parallel den View abfragt und das Ergebnis ausgibt.

                Comment


                • #9
                  ...genau. sowas müsste es sein.

                  Comment


                  • #10
                    Originally posted by tioga63 View Post
                    ...genau. sowas müsste es sein.

                    Du könntest die "Statusanzeige" z.B. in einen IFRAME auf der Seite packen und den Inhalt desselben in regelmäßigen Abständen mittels Javascript oder Meta-Tag aktualisieren.
                    Das ist dann aber wohl eher ein Thema für den Web Development-Bereich.

                    Gruß Falk
                    Wenn du denkst du hast alle Bugs gefunden, dann ist das ein Bug in deiner Denksoftware.

                    Quellcode ohne ein Mindestmaß an Formatierung sehe ich mir nicht an! Ich leiste keinen Privatsupport per Mail oder PN!

                    Comment


                    • #11
                      Originally posted by Falk Prüfer View Post
                      Du könntest die "Statusanzeige" z.B. in einen IFRAME auf der Seite packen und den Inhalt desselben in regelmäßigen Abständen mittels Javascript oder Meta-Tag aktualisieren.
                      Das ist dann aber wohl eher ein Thema für den Web Development-Bereich.

                      Gruß Falk
                      guten morgen,
                      ja, genau sowas in der art habe ich mir auch überlegt. ich muss irgendwie in einem festzulegenden turnus die entsprechenden oracle views abfragen, ob mein "job" noch aktiv ist. hast du viell. nen link im web-development bereich, wo ich zum thema javascript i.v.m datenbank abfrage was finden kann?

                      gruss und angenehmen tag.

                      Comment


                      • #12
                        Du könntest ja mal nach meta refresh suchen

                        Gruß Falk
                        Wenn du denkst du hast alle Bugs gefunden, dann ist das ein Bug in deiner Denksoftware.

                        Quellcode ohne ein Mindestmaß an Formatierung sehe ich mir nicht an! Ich leiste keinen Privatsupport per Mail oder PN!

                        Comment


                        • #13
                          ...hab jetzt eine lösungs-alternative gefunden.

                          führe die prozedur jetzt über das SCHEDULER-Package als job aus und frage im anschluss über eine perl-routine die existenz dieses jobs ab.

                          danke für eure unterstützung.

                          Comment

                          Working...
                          X