-
Nur, dass ein Insert-Cursor nicht explizit geschlossen werden kann (es gibt ja keinen Namen dafür).
Durch das closqlcsr=*endmod werden ja auch die Statements (hier das Insert-Statement) beim Verlassen freigegeben und somit der ODP geschlossen (jedenfalls bei meinen Test's).
Ganz sicher geht's mit einer benannten Actgrp, die nach Beenden per RCLACTGRP definitiv aufgelöst wird und auch die (automatische) DB-Anmeldung aufgehoben wird.
-
@Baldur:
ein offener ODP wg. eines Inserts verursacht aber keine Sperren, die weh tun, maximal shrxxx für die Datei und record locks gibt es ohne commitment controll hier auch keine.
Und Vorsicht: der CLOSQLCSR ist nur ein impliziter close und garantiert genausowenig wie ein expliziter close (der hier nicht geht) einen close des ODP und eine Aufgabe der zugehörigen Sperre.
Ob der RCLACTGRP die Sperren aufgibt, habe ich nicht im Kopf, aber der geht hier auch nicht, weil das NOMAIN dann ja aus einer anderen ACTGRP aufgerufen wird und dann in den Wald rennt, da das aufrufende Programm nicht neu aktivieren kann (es sei denn, man bindet selber zur Laufzeit), da würde hier new helfen, aber das ist auch Schmonz.
Aber: EXCL Sperre ohne serializable ist und bleibt Bug!
mfg
Dieter
 Zitat von Fuerchau
Nur, dass ein Insert-Cursor nicht explizit geschlossen werden kann (es gibt ja keinen Namen dafür).
Durch das closqlcsr=*endmod werden ja auch die Statements (hier das Insert-Statement) beim Verlassen freigegeben und somit der ODP geschlossen (jedenfalls bei meinen Test's).
Ganz sicher geht's mit einer benannten Actgrp, die nach Beenden per RCLACTGRP definitiv aufgelöst wird und auch die (automatische) DB-Anmeldung aufgehoben wird.
-
Vielleicht ist ja SQL gar nicht die Ursache. Beim Insert wird die Datei auch gar nicht mit *EXCL bzw *EXCLRD gesperrt, sondern, wie du schon korrekt sagst nur mit SHRRD.
Vielleicht wird die Datei ja irgendwie per ALCOBJ gesperrt und nur der DLCOBJ vergessen ?
Leider ist ja der Default-Scope = *JOB !!!
-
Stimmt am Insert wie gestern vermutet liegt es nicht. Das Problem titt in einem anderen Modul auf. Vor dem Insert werden einige Dateien in einem anderen Modul per
Delete from ParmLib/ParmTbl gelöscht.
Hier wird dann die Sperre gesetzt die bis zum Programmende nicht abgegeben wird und erst beim ENDJOB wieder verschwindet.
Die zu löschenden Tabellen werden per Parameter übergeben und werden dann in einer Schleife in der Modul geleert.
Do
.
.
Prepare DELSTAT
.
.
Execute DELSTAT
.
.
Enddo
-
Auch diese Sperre muss ausserhalb von SQL gesetzt sein, da auch der Delete wie der Insert keine EXCL-Sperre setzt.
Similar Threads
-
By ILEMax in forum IBM i Hauptforum
Antworten: 16
Letzter Beitrag: 24-01-07, 09:04
-
By Squall in forum NEWSboard Programmierung
Antworten: 23
Letzter Beitrag: 18-10-06, 12:01
-
By loeweadolf in forum NEWSboard Programmierung
Antworten: 3
Letzter Beitrag: 18-06-06, 12:14
-
By loeweadolf in forum NEWSboard Programmierung
Antworten: 2
Letzter Beitrag: 01-06-06, 09:43
-
By e_sichert in forum NEWSboard Programmierung
Antworten: 3
Letzter Beitrag: 03-05-06, 10:47
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- You may not post attachments
- You may not edit your posts
-
Foren-Regeln
|
Erweiterte Foren Suche
Google Foren Suche
Forum & Artikel Update eMail
AS/400 / IBM i
Server Expert Gruppen
Unternehmens IT
|
Kategorien online Artikel
- Big Data, Analytics, BI, MIS
- Cloud, Social Media, Devices
- DMS, Archivierung, Druck
- ERP + Add-ons, Business Software
- Hochverfügbarkeit
- Human Resources, Personal
- IBM Announcements
- IT-Karikaturen
- Leitartikel
- Load`n`go
- Messen, Veranstaltungen
- NEWSolutions Dossiers
- Programmierung
- Security
- Software Development + Change Mgmt.
- Solutions & Provider
- Speicher – Storage
- Strategische Berichte
- Systemmanagement
- Tools, Hot-Tips
Auf dem Laufenden bleiben
|
Bookmarks