-
Hallo,
ich denke hier liegen noch einige Verständnis-Probleme vor.
Voraussetzung dafür, dass Commitment-Control verwendet werden kann ist, dass die Dateien/Tabellen die verwendet werden sollen in einem Journal augezeichnet werden.
SET OPTION Commit = *CHG (oder eine der anderen Optionen) besagt lediglich, dass in diesem Modul/Programm Commitment-Control für SQL Inserts, Updates oder Deletes verwendet wird. Ohne diese Angabe würden SQL-Statements weder festgeschrieben noch zurückgesetzt werden können. Erfolgt ein Insert, Update oder Delete auf eine nicht aufgezeichnete Datei, wird die Aktion nicht ausgeführt und ein negativer SQL-Code wird ausgegeben. Es ist jedoch möglich einzelne Inserts, Updates oder Deletes nicht unter Commitment-Control auszuführen (auch wenn SET OPTION gesetzt wurde). Dazu muss am Ende des SQL-Inserts, -Updates oder Deletes WITH NC (with No Commit) angegeben werden.
Soll Commitment Control für native I/O verwendet werden, muss in RPG in den F-Bestimmungen für Update oder Output-Dateien das Schlüssel-Wort Commit angegeben werden. Fehlt dieses Schlüssel-Wort können die Daten für diese Datei weder festgeschrieben noch zurückgesetzt werden. Wurde Commitment Control (über STRCMTCTL) noch nicht gestartet, bricht das RPG-Programm ab.
Ist bei Programmen mit embedded SQL (und COMMIT = Irgendwas anderes als *NONE) Commitment-Control noch nicht gestartet, bricht das Programm nicht ab, sondern führt zunächst ein STRCMTCTL aus.
Mit Ausführung des Befehls STRCMTCTL wird der erste Commit gesetzt. Um Commit und Rollback verwenden zu können, muss dies in den Programmen/Modulen angegeben werden (s.o.), und nur diese Dateien werden festgeschrieben oder zurückgesetzt. Wird in alten Programmen Commitment-Control nicht verwendet, können diese auch wenn der Befehl STRCMTCTL gestartet wurde problemlos ausgeführt werden.
Eine Transaktion wird startet nach dem vorhergehenden Commit und endet mit dem nächsten Commit. Wird Rollback ausgeführt, werden alle aufgezeichneten Änderungen bis zum vorhergehenen Commit zurückgesetzt.
STRCMTCTL sollte bei Job-Start (am besten im Start-Programm) ausgeführt werden und auch erst wieder bei Job-Ende beendet werden. Beliebiges Starten und Beenden sollte vermieden werden. Weiterhin sollte man SQL das Starten nicht überlassen. Der Grund hierfür liegt darin, dass SQL den Befehl mit Default-Werten startet. Der Default für die Option Commitment Scope ist *ACTGRP, d.h. ein Commit oder Rollback funktioniert nur innerhalb der Aktivierungsgruppe. In Umgebungen, ohne 100% sauberes Aktivierungsgruppen-Design oder wenn noch OPM und ILE-Programme gemischt werden, sollte der Commitment Scope auf *JOB gesetzt werden, um unliebsame Überraschungen zu vermeiden.
Birgitta
Similar Threads
-
By christian_lettner in forum NEWSboard Programmierung
Antworten: 2
Letzter Beitrag: 16-11-06, 10:15
-
By FNeurieser in forum NEWSboard Programmierung
Antworten: 3
Letzter Beitrag: 11-10-06, 14:53
-
By malzusrex in forum IBM i Hauptforum
Antworten: 8
Letzter Beitrag: 19-09-06, 11:04
-
By Kaufmann in forum IBM i Hauptforum
Antworten: 11
Letzter Beitrag: 28-06-06, 14:11
-
By loeweadolf in forum NEWSboard Programmierung
Antworten: 2
Letzter Beitrag: 01-06-06, 09:43
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