PDA

View Full Version : WRKQRY schickt Commit-Controled Job auf Lockwait



Christian.Hesse
04-09-08, 16:31
Hallo!

Ich habe hier zwei RPG-Programme, die von einem aktiven WRKQRY auf LCKW geschickt werden, sobald im WRKQRY eines der gejournalten Files eingebunden ist.

Locklevel ist auf *CHG und der Scope auf *JOB eingestellt und das File ist wie folgt definiert:

FJIVEHH UF A E K DISK USROPN COMMITDaneben sind noch 4 weitere Files ebenso unter Commit definiert.

Wie kann ich es vermeiden, daß mir der WRKQRY diesen Job blockiert?

Vielen herzlichen Dank!

Gruß

Christian

BenderD
04-09-08, 22:43
soweit du uns hier keine relevante Information unterschlägst, handelt es sich um einen Bug

D*B


Hallo!

Ich habe hier zwei RPG-Programme, die von einem aktiven WRKQRY auf LCKW geschickt werden, sobald im WRKQRY eines der gejournalten Files eingebunden ist.

Locklevel ist auf *CHG und der Scope auf *JOB eingestellt und das File ist wie folgt definiert:

FJIVEHH UF A E K DISK USROPN COMMITDaneben sind noch 4 weitere Files ebenso unter Commit definiert.

Wie kann ich es vermeiden, daß mir der WRKQRY diesen Job blockiert?

Vielen herzlichen Dank!

Gruß

Christian

Christian.Hesse
05-09-08, 10:58
Ich habe eben gerade bemerkt, daß ich etwas unterschlagen habe, nämlich das:


C EVAL rc = DoCmd('STRJRNPF FILE(JIVEHH)' +
C ' JRN(JISJRN) IMAGES(*BOTH)') und genau daran bleibt er mit einem LCKW hängen. Vorallem habe ich noch mehr davon...



* +------------------------------------------------------------+
* ¦ End Commit Control of previous Runs
* +------------------------------------------------------------+
C EVAL rc = DoCmd('ENDCMTCTL')
.
.
.
C EVAL rc = DoCmd('STRJRNPF FILE(JIVEHH)' +
C ' JRN(JISJRN) IMAGES(*BOTH)')

* +------------------------------------------------------------+
* ¦ Start CMTCTL on Joblevel
* +------------------------------------------------------------+
C CLEAR rc
C EVAL rc = DoCmd('STRCMTCTL LCKLVL(*CHG)' +
C ' CMTSCOPE(*JOB)')

C OPEN JIVEHH
Der STRJRNPF wird für sämtliche Files wiederholt, die unter Commit Control geöffnet werden.

Damit stellt sich für mich eine neue Frage: Ist das gut so? Macht man das so? Oder sollte man das anders machen?

Vielen Dank!

Gruß

Christian

BenderD
05-09-08, 11:19
der STRJRNPF braucht einen exclusive lock auf die Datei und da kann selbst Query stören, wenn die Datei offen bleibt.
Die übliche Vorgehensweise ist, dass man Dateien komplett jorunalisiert (zumindest wenn sie unter commit Steuerung verwendet werden; allenfalls hängt man die Journalisierung vor Copy hin und zurück Arien ab, dazu braucht man eh einen exclusive lock, den man sich vorher holt).
Der strcmtctl ist bei embedded SQL auch überflüssig, das passiert automatisch auch.

D*B


Ich habe eben gerade bemerkt, daß ich etwas unterschlagen habe, nämlich das:


C EVAL rc = DoCmd('STRJRNPF FILE(JIVEHH)' +
C ' JRN(JISJRN) IMAGES(*BOTH)') und genau daran bleibt er mit einem LCKW hängen. Vorallem habe ich noch mehr davon...



* +------------------------------------------------------------+
* ¦ End Commit Control of previous Runs
* +------------------------------------------------------------+
C EVAL rc = DoCmd('ENDCMTCTL')
.
.
.
C EVAL rc = DoCmd('STRJRNPF FILE(JIVEHH)' +
C ' JRN(JISJRN) IMAGES(*BOTH)')

* +------------------------------------------------------------+
* ¦ Start CMTCTL on Joblevel
* +------------------------------------------------------------+
C CLEAR rc
C EVAL rc = DoCmd('STRCMTCTL LCKLVL(*CHG)' +
C ' CMTSCOPE(*JOB)')

C OPEN JIVEHH
Der STRJRNPF wird für sämtliche Files wiederholt, die unter Commit Control geöffnet werden.

Damit stellt sich für mich eine neue Frage: Ist das gut so? Macht man das so? Oder sollte man das anders machen?

Vielen Dank!

Gruß

Christian

B.Hauser
05-09-08, 11:32
Der strcmtctl ist bei embedded SQL auch überflüssig, das passiert automatisch auch.

Allerdings sollte man dabei auch wissen, dass mit Standard-Werten gestartet wird, d.h. der Commitment Level ist auf *ACTGRP! Bei unsauberem Design hat das schon manches Mal für ein böses Erwachen gesorgt, da COMMIT und ROLLBACK nur innerhalb der Aktivierungsgruppe ziehen.

Birgitta

BenderD
05-09-08, 11:41
... wo er auch hingehört

Allerdings sollte man dabei auch wissen, dass mit Standard-Werten gestartet wird, d.h. der Commitment Level ist auf *ACTGRP! Bei unsauberem Design hat das schon manches Mal für ein böses Erwachen gesorgt, da COMMIT und ROLLBACK nur innerhalb der Aktivierungsgruppe ziehen.

Birgitta

Christian.Hesse
05-09-08, 12:57
Was mich etwas wundert: Warum setzt der WRKQRY einen *SHRNUP auf das File, wohingegen andere Programme sich mit einem *SHRRD zufrieden geben?

Christian

BenderD
05-09-08, 14:00
der soll wohl sicher stellen, dass Summen stimmen, ich weiß aber nicht wie lange der den hält und ob man das einstellen kann.

D*B


Was mich etwas wundert: Warum setzt der WRKQRY einen *SHRNUP auf das File, wohingegen andere Programme sich mit einem *SHRRD zufrieden geben?

Christian

Pikachu
05-09-08, 14:04
Siehe hier unter Datenbereich QQULCKLVL (http://www-01.ibm.com/support/docview.wss?uid=nas13950e9a6e103897c86256b8800691b 95).

Christian.Hesse
05-09-08, 14:33
Das paßt und funktioniert. :-)

Vielen herzlichen Dank und ein schönes Wochenende

Christian