DBAtlas · Atlas für Datenbankbetrieb

ORA-00060: Deadlock detected while waiting for resource (Deadlock beim Warten auf Ressource erkannt)

Oracle

Was bedeutet das?

Zwei oder mehr Sessions blockieren sich gegenseitig; jede wartet auf eine Ressource, die die andere hält. Oracle erkennt den Zyklus, wählt ein Opfer und setzt dessen Statement zurück.

Ursache

Zeilensperren in unterschiedlicher Reihenfolge, dieselben Zeilen über Kreuz von verschiedenen Transaktionen aktualisiert, Tabellensperren bei Updates der Elterntabelle durch nicht indizierte Foreign Keys oder parallele DML auf einem Bitmap-Index.

Lösung

Untersuche die im Alert Log referenzierte Deadlock-Tracedatei (Graph), um die beteiligten SQL-Statements und Zeilen zu finden. Greife in der Anwendung immer in derselben Reihenfolge auf Tabellen/Zeilen zu. Indiziere Foreign-Key-Spalten (nicht indizierte FKs sind eine klassische Deadlock-Ursache). Halte Transaktionen kurz und prüfe die Commit-Häufigkeit. Fange die Deadlock-Transaktion in der Anwendung ab und wiederhole sie.

In DBAtlas öffnen →

Weitere Einträge zu dieser Datenbank