PL/SQL: Flashback – ein sauberer Blick in die Vergangenheit

Zeige alle Datensätze der Tabelle ABC_TABLE zum Stand von vor 60 Minuten:

SELECT * FROM ABC_TABLE AS OF TIMESTAMP (SYSTIMESTAMP - INTERVAL '60' MINUTE);

Variante 1: Zeige alle Datensätze der Tabelle ABC_TABLE an, die in den letzten 60 Minuten geändert wurden:

SELECT versions_operation, versions_xid, versions_starttime, ABC_TABLE.*
FROM ABC_TABLE
VERSIONS BETWEEN     timestamp (SYSTIMESTAMP - INTERVAL '60' MINUTE) and (SYSTIMESTAMP)
WHERE versions_operation is not null

Variante 2: Zeige alle Datensätze der Tabelle ABC_TABLE an, die in den letzten 60 Minuten geändert wurden:

SELECT   versions_starttime
       , versions_endtime
       , case versions_operation
             when 'I' then 'Insert'
             when 'U' then 'Update'
             when 'D' then 'Delete'
             else NULL
         end AS versions_operation
       , t.*
FROM     ABC_TABLE
         versions between timestamp (systimestamp - numtodsinterval(60, 'MINUTE')) and (systimestamp) t
WHERE       versions_starttime > (systimestamp - numtodsinterval(60, 'MINUTE'))
         OR versions_endtime > (systimestamp - numtodsinterval(60, 'MINUTE'))
ORDER BY 1 nulls first, 2
;

In welchen Tabellen des kompletten Schemas gab es Änderungen in den letzten 5 min

Danke an Gert!

Warnung: Die Flashback Queries sind sehr I/O-intensiv. Daher möglichst nicht auf Produktivsystem abfeuern und auf einen kurzen Zeitraum begrenzen!

Warnung2: es kann eine Fehlermeldung invalid irgendwas snapshot kommen – dann einfach das query nochmal ausführen.

Wielange die Abfrage dauert, hängt sehr davon ab – exemplarisch meine beiden ersten:

SELECT   q'[union select versions_starttime
       , versions_endtime
       , case versions_operation
             when 'I' then 'Insert'
             when 'U' then 'Update'
             when 'D' then 'Delete'
             else NULL
         end AS versions_operation,']'
         ||table_name ||
         q'[' as table_name  from ]' ||table_name||
         q'[ versions between timestamp (systimestamp - numtodsinterval(5, 'MINUTE')) and (systimestamp) t
                              WHERE       versions_starttime > (systimestamp - numtodsinterval(5, 'MINUTE'))
         OR versions_endtime > (systimestamp - numtodsinterval(5, 'MINUTE'))]'
                  from user_tables
                  where tablespace_name is not null 

Mit beispielsweise dem SQL Developper als IDE exportiert (context menue) man das Query Result im Format Text, ohne Header und ohne Left- und Right Exclosure ins Clipboard.

Das Schlüsselwort UNION nun noch entfernen und abfeuern …

Als Ergebnis erhält man alle Tabellen, bei denen etwas in den letzten 5 Minuten geändert wurde. Dem kann man nun mit den im oberen Kapitel beschriebenen Verfahren im Detail nachgehen.

Netbank: was bedeuten die angegebenen Kreditkarten Limits genau?

Die im Netbank-Onlinekonto unter Nach-Unten-Pfeil -> Kontodaten -> Kreditkarten -> Stapel-Icon -> Kartenlimite angegebenen Limite scheinen nicht die Online-Transaktionen abzudecken:

Die Antwort kam am gleichen Tag:

Limit für Kartenzahlungen scheint sich laut Support-Anfrage vom 16.6.2021 auf den stationären Handel zu beziehen.

Erst bei einer erneuten Anfrage an den Support (Antwort am 17.6.2021) habe ich die davon wohl unabhängigen Limite für eCommerce-Transaktionen zugeschickt bekommen, die ich niergens im Online-Konto gefunden habe:

Es lohnt sich also den Support von Netbank direkt zu fragen, wie hoch das eCommerce-Limit tatsächlich ist.

ZUständige Einzugstelle eines privat krankenversicherten Werkstudenten

„wenn er (der Werkstudent) denn schon mal gesetzlich versichert war, (führt man die Rentenversicherung und die Umlagen) an die letzte zuständige Kasse, ansonsten haben Sie freie Auswahl.“ (Quelle: Experte in DATEV-Forum)

„Bei privat krankenversicherten Arbeitnehmern bleibt in der Regel die Krankenkasse zuständig, bei der der Arbeitnehmer zuletzt versichert war. Ist diese nicht feststellbar, so hat der Arbeitgeber eine der wählbaren Krankenkasse als Einzugsstelle auszuwählen.“ (Quelle Wikipedia)