HEISENBUG MIT MAILTO ANALYSIEREN (NOCH UNGELÖST)

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?):

  • Chrome schien stärker betroffen als Firefox (wobei mein Chrome ohnehin gerade spinnt)
  • Komplexe Webanwendungen schienen stärker betroffen, als einfache Seiten
  • Die JavaScript-Variante schien stärker betroffen, als die HTML-Variante

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

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.