[NEWSboard IBMi Forum]
Seite 1 von 2 1 2 Letzte
  1. #1
    Registriert seit
    Apr 2005
    Beiträge
    385

    Teildatei- Satzsperren bei SQLRPGLE obwohl Programm zu

    Hallo zusammen,

    bei einem SQLRPGLE habe ich folgendes Phänomen, das auf einer Datei Satz und Teildateisperren bleiben, obwohl das Programm beendet ist.

    Die Cursor werden alle definitiv geschlossen, kurz vor Programmende habe ich diese exclusiv nochmals abgesetzt und im JOBLOG steht auch das versucht wurde einen nicht geöffneten Cursor zu schließen und habe auch das Programm al mit der Option CLOSECURSOR *ENDMOD gewandelt --> Kein Unterschied.

    Einzig was mir sonderbar vorkam ist, das im JOBLOG immer wieder was davon steht, das ODP nicht gelöscht werden.

    Was kann ich machen, das alle Sperren "verschwinden" wenn das Programm am Ende ist?

    Danke an alle Helfenden.

  2. #2
    Registriert seit
    Aug 2001
    Beiträge
    2.873
    Was mich verwundert ist, dass nach dem Umwandeln mit CLOSQLCSR *ENDMOD die ODPs immer noch offen sind.

    Kann es sein, dass immernoch die alte Variante läuft, d.h. die bei der mit *ENDACTGRP umgewandelt wurde?
    Auf deutsch heißt das, hast Du die Aktivierungsgruppe beendet, bevor Du das neuumgewandelte Programm aufgerufen hast?

    Ansonsten versucht SQL immer die ODPs solange offen zu halten wie möglich, um einen FULL OPEN zu vermeiden und einen PSEUDO OPEN auszuführen. Beim Full Open werden die Access Pläne aktualisiert und der ODP neu aufgebaut und mit Daten geflüllt. Beim PSEUDO Open wird der ODP wiederverwendet und lediglich die Daten aktualisiert. Das Aufbauen des ODPs ist der zeitaufwändigste Prozess beim Ausführen eines SQL Statements.

    Eine Möglichkeit (Notlösung) , die ODPs auf eine bestimmte Datei zu schließen, sofern Du sie in Deinem Programm unqualifiziert angegeben hast, ist die Bibliothek in der sich die Datei befindet aus der Bibliotheksliste zu nehmen und anschließend wieder einzufügen.

    Birgitta
    Birgitta Hauser

    Anwendungsmodernisierung, Beratung, Schulungen, Programmierung im Bereich RPG, SQL und Datenbank
    IBM Champion seit 2020 - 4. Jahr in Folge
    Birgitta Hauser - Modernization - Education - Consulting on IBM i

  3. #3
    Registriert seit
    Apr 2005
    Beiträge
    385
    Danke,
    das mit der LIB werde ich mal versuchen. Ich bin mir aber sicher, das ich das Programm in einem neuen Job hab laufen lassen, da ich ja prüfen wollte, ob die Sperren danach verschwinden.

    Werde mal schauen, vielleicht handelte es sich ja nur um eine kosmische Störung ;-)

  4. #4
    Registriert seit
    Mar 2002
    Beiträge
    5.287
    ... das einzige, was (fast) alles schließt, ist ein disconnect; aber was stört denn an den ODPs???

    D*B

    Zitat Zitat von ExAzubi Beitrag anzeigen
    Hallo zusammen,

    bei einem SQLRPGLE habe ich folgendes Phänomen, das auf einer Datei Satz und Teildateisperren bleiben, obwohl das Programm beendet ist.

    Die Cursor werden alle definitiv geschlossen, kurz vor Programmende habe ich diese exclusiv nochmals abgesetzt und im JOBLOG steht auch das versucht wurde einen nicht geöffneten Cursor zu schließen und habe auch das Programm al mit der Option CLOSECURSOR *ENDMOD gewandelt --> Kein Unterschied.

    Einzig was mir sonderbar vorkam ist, das im JOBLOG immer wieder was davon steht, das ODP nicht gelöscht werden.

    Was kann ich machen, das alle Sperren "verschwinden" wenn das Programm am Ende ist?

    Danke an alle Helfenden.
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

  5. #5
    Registriert seit
    Aug 2003
    Beiträge
    1.508
    Zitat Zitat von ExAzubi Beitrag anzeigen
    bei einem SQLRPGLE habe ich folgendes Phänomen, das auf einer Datei Satz und Teildateisperren bleiben, obwohl das Programm beendet ist.
    Hallo,
    das klingt für mich nach Commitment-Control. Falls es so ist, entweder vor Programmende ein
    Code:
    Exec Sql Commit;
    oder
    Code:
    Exec Sql set options Commit=*none;

  6. #6
    Registriert seit
    Nov 2003
    Beiträge
    2.307
    Wird das Programm mit LR auf ON beendet?

  7. #7
    Registriert seit
    Aug 2001
    Beiträge
    2.873
    Zitat Zitat von Pikachu Beitrag anzeigen
    Wird das Programm mit LR auf ON beendet?
    *INLR=*ON betrifft nur den RPG-Zyklus und nicht embedded SQL.
    ... und unter ILE funktioniert der *INLR anders als unter RPGIII, zwar werden die Dateien, die in den F-Bestimmungen definiert sind nach wie vor geöffnet und geschlossen, das Programm wird jedoch nicht aus dem Speicher entfernt. Beim nächsten Aufruf wird lediglich der (noch) reservierte Speicher neu initialisiert.
    Ein Programm wird erst durch Beenden der Aktivierungsgruppe in der es läuft aus dem Speicher entfernt.

    P.S. RPG-Zyklus meint nicht zwingend IP, sondern dass der Zyklus in jeder RPG-Main-Procedure automatisch aktiviert ist.

    Birgitta
    Birgitta Hauser

    Anwendungsmodernisierung, Beratung, Schulungen, Programmierung im Bereich RPG, SQL und Datenbank
    IBM Champion seit 2020 - 4. Jahr in Folge
    Birgitta Hauser - Modernization - Education - Consulting on IBM i

  8. #8
    Registriert seit
    Jun 2009
    Beiträge
    316
    Programm umwandeln mit COMMIT(*NONE)

  9. #9
    Registriert seit
    Jun 2009
    Beiträge
    316
    Programm umwandeln mit COMMIT(*NONE)

  10. #10
    Registriert seit
    Apr 2005
    Beiträge
    385
    Ich habe jetzt mal die SET OPTION CLOSECSR = ENDMOD gesetzt und zumindest die Satzsperren sind verschwunden, jetzt blieben nur noch die Teildateien geöffnet. Alles sehr merkwürdig.

    Eine Frage zur Aktivierungsgruppe, wenn ich mit Aktivierungsgruppe *NEW das Programm wandel, wird dann nicht automatisch auch beim Programmende die Aktivierungsgruppe geschlossen?

  11. #11
    Registriert seit
    Mar 2002
    Beiträge
    5.287
    ... nochmal: die database engine betreibt einiges an caching - und das ist auch gut so!!! Was stört dich konkret an dem Verhalten???

    D*B

    Zitat Zitat von ExAzubi Beitrag anzeigen
    Ich habe jetzt mal die SET OPTION CLOSECSR = ENDMOD gesetzt und zumindest die Satzsperren sind verschwunden, jetzt blieben nur noch die Teildateien geöffnet. Alles sehr merkwürdig.

    Eine Frage zur Aktivierungsgruppe, wenn ich mit Aktivierungsgruppe *NEW das Programm wandel, wird dann nicht automatisch auch beim Programmende die Aktivierungsgruppe geschlossen?
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

  12. #12
    Registriert seit
    Apr 2005
    Beiträge
    385
    Eigentlich nichts, nur in diesem konkreten Beispiel ist es, das sich bei den Dateien um "Arbeitsdateien" handelt, wenn jetzt ein weiterer User das Programm aufruft, dann klappt ggf. der CLRPFM nicht da die Datei noch offen ist.

    Ich werde es so machen, das ich die Objekte als Batchjob in die QTEMP kopiere dort wird dann geackert, und später kopiere ich die Dateien dann wieder zurück.

Similar Threads

  1. Programm auf "ferner" AS400 ausführen.
    By Souljumper in forum NEWSboard Programmierung
    Antworten: 6
    Letzter Beitrag: 13-05-09, 19:50
  2. Programmbibliothek in einem Cobol oder CL Programm ermitteln
    By schatte in forum NEWSboard Programmierung
    Antworten: 19
    Letzter Beitrag: 10-01-07, 11:32
  3. Teildatei erstellen
    By Jabs in forum IBM i Hauptforum
    Antworten: 6
    Letzter Beitrag: 12-12-06, 07:59
  4. Teildatei mit SQL anzeigen
    By Rico in forum NEWSboard Programmierung
    Antworten: 3
    Letzter Beitrag: 06-07-06, 16:25
  5. *zoned bei SQLRPGLE Programm
    By Stefan_Sk in forum NEWSboard Programmierung
    Antworten: 3
    Letzter Beitrag: 12-07-05, 13:04

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • You may not post attachments
  • You may not edit your posts
  •