2016-04-27 7 views
0

Ich bekomme oft hängende Sitzungen (Sperrtabellen) in Oracle.Vermeiden Sie hängende Sitzungen und Tabellensperren Oracle

Gibt es ohne DBA-Berechtigungen Möglichkeiten, diese Sitzungen zu löschen oder Tabellen zu entsperren?

Gibt es etwas, was ich tun kann, um das Problem insgesamt zu vermeiden? (Einige Timeout-Einstellungen in SQL * PLUS zum Beispiel).

Dies ist meist SQL von Bash-Skripten gestartet.

+1

Nodes, die Sitzungen beenden, benötigen die Berechtigung ALTER SYSTEM. Um die gesperrten Objekte zu überprüfen, sollten Sie in der Lage sein, v $ locked_object abzufragen. –

+1

Entsperren bedeutet im Grunde, die Sitzung zu löschen, die das Objekt sperrt. Wenn Sie also die Sitzung beenden, werden die Sperren für diese Sitzung automatisch gelöscht –

Antwort

1

Sie können Ihren DBA bitten, Ihnen Befugnisse zu übertragen, aber es gibt keine Möglichkeit, diese Probleme sofort zu beheben, wenn Sie kein DBA sind. Wenn es sich um Bash-Skripte handelt, können Sie sie töten -9, vorausgesetzt, Sie können herausfinden, welche PIDs das Zappen erfordern.

Natürlich sind hängende Sitzungen in der Regel das Ergebnis von schlechtem Systemdesign oder schlechter Programmierpraxis. Also, wenn Sie sie oft bekommen, sollten Sie auf die Reparatur Ihrer Anwendung schauen.

Es ist nicht möglich, konkrete Ratschläge zu geben, ohne etwas über Ihre Anwendung zu wissen und was genau diese Hänge verursacht, aber hier sind einige Vorschläge. Auf der architektonischen Ebene wären mögliche Lösungen eine intelligentere Auftragsverwaltung wie Terminplanung oder Warteschlangen. Eine bessere Programmierpraxis könnte pessimistisches Sperren (select ... for update) und Transaktionsverwaltung umfassen.