Die Fehlermeldung kam, als ich eine Oracle Prozedur aufgerufen habe, mit einem Nutzer, dem die Rechte fehlen, diese Prozedur aufzurufen.
Lösung:
grant execute on MEINE_PROZEDUR to MEIN_BISLANG_UNTERPRIVILIGIERTER_USER;
Die Fehlermeldung kam, als ich eine Oracle Prozedur aufgerufen habe, mit einem Nutzer, dem die Rechte fehlen, diese Prozedur aufzurufen.
Lösung:
grant execute on MEINE_PROZEDUR to MEIN_BISLANG_UNTERPRIVILIGIERTER_USER;
Manchmal versagt bei der Button/Link mit mailto in meinem Browser – sprich: trotz Klicken öffnet sich kein Tunderbird-Email-Fenster. Leider ist dieser Bug nicht reproduzierbar – er tritt sporadisch auf. In der gleichen Session funktioniert der Link, beim nächsten Klick nicht mehr usw.
Ich kann nur einige vage Eindrücke niederschreiben, da der Bug inzwischen gar nicht mehr auftritt (vielleicht weil ich alle Chrome-Plugins inzwischen deaktiviert habe?):
Lösungsansätze beim nächsten Mal:
Gleich schauen, ob die mailtos bei einfachen Webseiten funktionieren (müsste nämlich eigentlich): https://www.w3schools.com/code/tryit.asp?filename=GRNQWVG6AYM1
Plugins vorübergehend deaktivieren
Thunderbird schreibt in seiner Fehlerkonsole (allerdings konnte ich das nur für die erfolgereichen Versuche sehen:
Zeitstempel: 19.06.2021 12:11:21
Fehler: NS_NOINTERFACE: Component returned failure code: 0x80004002 (NS_NOINTERFACE) [wzIQuicktext.addObserver]
Quelldatei: chrome://quicktext/content/quicktext.js
Zeile: 33
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
;
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.