-
SQL Update
Hallo zusammen,
ich hatte heute Morgen einen SQL Update Befehl zu früh auf die Reise geschickt.
Nun hat mir der Befehl in der DB eine unbekannte Anzahl von Feldern verändert!
Leider weiß ich nun nicht mehr wie viele dies waren.
Gibt es eine Möglichkeit dies heraus zu finden. Das ganze müsste rückgänig gemacht werden.
Gruß
co_steffl
-
Wenn die Tabelle journalisiert ist, kann man dies per Journaleinträge zurückdrehen.
Wenn nicht hast du nur dann eine Chance, wenn du eine zeitnahe Sicherung der Datei zurück sicherst und die Daten dann (per Programm, SQL) abgleichst und wiederherstellst.
-
Wie zu früh? und unbekannte Anzahl von Feldern?
Was für'n SQL? via Pgm? oder Navigator? oder Strsql?
Journalisierung eingeschaltet?
Sicherung vom Vortag?
Fragen über Fragen ...
Das Notwendige steht über dem technisch machbaren.
(klingt komisch, funktioniert aber!)
-
Über StrSql hätte noch weiterblättern müssen und habe Enter gedrückt - so einfach
Journal ist eingeschaltet habe aber damit noch nie zurückgedreht
-
Im STRSQL wird direkt unter der Anweisung gemeldet, wie viele Datensätze tatsächlich aktualisiert wurden.
-
Zitat von co_steffl
Über StrSql hätte noch weiterblättern müssen und habe Enter gedrückt - so einfach
Journal ist eingeschaltet habe aber damit noch nie zurückgedreht
RMVJRNCHG ist Dein Freund, ist aber Waffenschein pflichtig und wenn Änderungen hinterherkamen, geht das sowieso nicht mehr wirklich. Sinnvoll ist in jedem Fall vorher mit DSPJRN mit Selektion auf Job und Zeit, um zu sehen wohin überall geschrieben wurde. Erst denken, dann handeln: der zweite Fehler ist immer der schlimmere!
D*B
-
Vielleicht noch ein Tipp für die Zukunft:
Ändere die Option Commit im STRSQL von *NONE auf *CHG (F13 --> Auswahl 1 --> Commit)
Sofern Du jetzt versuchst eine Tabelle/phys.Datei, die nicht in einem Journal aufgezeichnet ist, wird der Update/Insert/Delete schief gehen, es sei denn Du würdest WITH NC (= With NO COMMIT) am Ende des SQL-Befehls angeben.
Fehlermeldung: YOURFILE in YOURLIB für Operation ungültig.
Damit weißt Du dann: Hoppla Vorsicht! Am besten die Daten zuerst sichern.
Wenn Deine Dateien aufgezeichnet sind und Dir passiert wieder das gleiche Malheur, kannst Du Dich gemütlich zurücklehnen und warten bis der Update fertig ist.
Im Anschlusse gibst Du ROLLBACK ein, Datenfreigabe und die Daten werden auf den Stand vor dem Update zurückgesetzt.
Wenn Du geprüft hast, ob alle Daten korrekt upgedated sind, musst DU einen COMMIT ausführen.
Sofern Du den COMMIT vergisst bleiben die geänderten Sätze gelockt bis entweder in Deinem Job ein Commit oder Rollback ausgeführt wird, oder der Job beendet wird. Wird der Job übrigens beendet, ohne dass Commit ausgeführt wurde, egal ob normal oder abnormal, werden die geänderten Daten ebenfalls zurückgesetzt.
Birgitta
-
@Bender
Änderungen hinterher kamen nicht. Mit DSPJRN habe ich die Records schon gefunden. Jedoch bin ich mir nicht sicher wie ich den RMVJRNCHG anwenden muss. Ich sehe die Sätze UB + UP
-
am Besten suchst Du Dir im Journal die erste und letzte Journal ID und dann kannst Du mit RMVJRNCHG die Dtaeien angeben und von JournalId bis Journal Id, wobei von > als bis ist, also rückwärts.
Ansonsten noch der Tip, dass man bei Bulk Operationen (also sehr vielen zu ändernden Sätzen mit interaktivem SQL und Commit sehr sehr vorsichtig sein muss: man sammelt da unzählige Sperren ein, kann die gesamte Kiste dicht knebeln und die laufende Operation lässt sich nicht abbrechen, aber konkurriernde Jobs brechen ab, wegen der Sperren.
D*B
-
Hallo
OK. Dank an alle
Ich kann zwar genau raussuchen welche Records betroffen waren. Aber ich kann nicht sagen ob die Records bereits anderweitig geändert wurden. Da ich annehme das der Rollback (RMVJRNCHG) auf Record Ebene basiert kann ich auch nicht sagen ob ich mir damit noch mehr kaputt mache. Also macht das Jrn so auch keinen Sinn. Wenn es auf Feldebene arbeiten würde wäre das Ok.
Also muss ich einen Weg über RPG suchen. Danke nochmal
Gruß
co_steffl
-
...
- dspjrn output(*outfile) mit Eingrenzung auf die Datei sagt einem auch, ob Änderungen danach waren.
- auf meiner OpenSource Seite ist ein Programm, das einem die Journalsätze aufbereitet in eine Datei stellt. damit kann man mit einem SQL Script sogar Deltas rausnehmen.
D*B
-
OK Danke für den Tipp
werde mir das mal anschauen.
Gruß
co_steffl
Similar Threads
-
By tarkusch in forum NEWSboard Programmierung
Antworten: 5
Letzter Beitrag: 02-06-14, 09:45
-
By Joe in forum IBM i Hauptforum
Antworten: 4
Letzter Beitrag: 15-04-03, 15:06
-
By Joe in forum IBM i Hauptforum
Antworten: 2
Letzter Beitrag: 01-04-03, 19:50
-
By schreibr in forum IBM i Hauptforum
Antworten: 4
Letzter Beitrag: 12-09-01, 08:22
-
By andigoering in forum NEWSboard Server & Hardware Markt
Antworten: 3
Letzter Beitrag: 23-08-01, 10:38
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