Re: Locken einer Oracle-DB Tabelle
- From: "Ulrik Hoffmann" <ulrik.1und1news@xxxxxxxxxxxxxxxx>
- Date: Thu, 09 Feb 2006 08:20:13 +0100
folgende Problemstellung habe ich in meiner Java-Anwendung, die per JDBC mit
einer Oracle 9i-Datenbank kommuniziert.
Auf eine DB-Tabelle wird von mehreren Anwendungen (die in eigenen JVM
laufen) per JDBC zugegriffen. Diese Tabelle dient zur Steuerung von
Prozessen und hat in der Spalte "Status" die Alternativen "geblockt" und
"frei".
Eine laufende Anwendung (im folgenden Prozess genannt) sucht nun in der
gesamten Tabelle in der Spalte "Status" nach dem Inhalt "geblockt". Wird
dieser gefunden, bricht die Anwendung ab. Ansonsten fährt sie fort.
warum machst Du nicht ein
select status from tabelle where prozess = 'p1' for update;
Wenn das jeder Prozess macht, warten sie solange, bis sie fortfahren dürfen. Wenn Du "...for update nowait" machst, bekommen die Prozesse eine Exception, wenn die Tabelle gesperrt ist.
Das "For Update" lockt explizit die Zeile(n), die der Where-Bedingung entsprechen. Der Lock bleibt bis zum nächsten Commit bestehen, weswegen Du vor allem "Autocommit" Deiner JDBC-verbindung abstellen musst. Ich würde auch überlegen, das ganze nicht in eine stored-procedure zu packen.
Viele Grüße
Ulrik
.
- Follow-Ups:
- Re: Locken einer Oracle-DB Tabelle
- From: Bernd Eckenfels
- Re: Locken einer Oracle-DB Tabelle
- References:
- Locken einer Oracle-DB Tabelle
- From: Michael Becker
- Locken einer Oracle-DB Tabelle
- Prev by Date: Re: Locken einer Oracle-DB Tabelle
- Next by Date: Re: Datenbank Poet langsam übers XP-Netzwerk
- Previous by thread: Re: Locken einer Oracle-DB Tabelle
- Next by thread: Re: Locken einer Oracle-DB Tabelle
- Index(es):
Relevant Pages
|