Datenbanken mit mehreren Nutzern
-
Hallo, alle zusammen!
Also....ich habe eine DB (Oracle7) auf einem Server laufen. Fuer diese DB habe ich eine Benutzeroberflaeche geschrieben mit BCB6. Es funktioniert soweit auch alles ganz gut. Nur gibt es probleme wenn die Programm auf mehreren rechnern gestartet wird und mit gleichen date gearbeitet wird.
Wie oder mit welchen mitteln kann ich den Multiuserbetrieb regeln?
MfG Denis
-
Was meinst du mit "gleichen Date gearbeitet wird"?
Oracle ist sogar sehr für "Multiuser" ausgelegt.
-
Ist eure Glaskugel auch gerade nicht auffindbar?
Es gibt Probleme, wenn das Programm auf mehreren Rechnern gestartet wird? Dann solltest Du die Probleme lösen oder diese nennen.
-
Mit gleichen Daten meine ich die gleiche Tabelle.
Ich moechte keine Loesung fuer meine Probleme, sondern ich dachte ihr koennt mir ein paar techniken nennen mit denen ich den Multiuserbetrieb verbessern kann. Damit keine Konflikte bei der Datennutzung (Insert, Update, Delete) entstehen.
Denis
-
Wieso sollte ein DB damit Probleme haben. Dafür sind sie da.
Und wenn du jetzt auf verschiedene Fälle anspricht:
z.B. Userverwaltung,
2 Laden den gleichen Userdatensatz. Biede ändern ihn. Der 2te überschreibt die Daten des ersten.Da kann dir IMHO niemand so einfach helfen da es da keine Kochrezepte für sowas gibt.
Ist immer von Fall zu Fall verschieden.
In diesem Fall z.B. durch sperren des Datensatzes. Der 2te darf ihn zwar lesen aber nicht ändern.
-
Hmm unter SQL würde ich sagen "Transaktionen".
MfG TokTom
-
Unix-Tom schrieb:
Wieso sollte ein DB damit Probleme haben. Dafür sind sie da.
Und wenn du jetzt auf verschiedene Fälle anspricht:
z.B. Userverwaltung,
2 Laden den gleichen Userdatensatz. Biede ändern ihn. Der 2te überschreibt die Daten des ersten.Da kann dir IMHO niemand so einfach helfen da es da keine Kochrezepte für sowas gibt.
Ist immer von Fall zu Fall verschieden.
In diesem Fall z.B. durch sperren des Datensatzes. Der 2te darf ihn zwar lesen aber nicht ändern.Ob auf einer Tabelle mit Satzschutz gearbeitet werden soll oder besser nicht, muss immer von Fall zu Fall unterschieden werden.
Besteht Satzschutz auf einem Datensatz (Oracle sperrt einzelne Datensätze) so kann kein anderer User diesen Satz bearbeiten. Das kann gut sein (keine Konflikte wie Unix-Tom sie beschrieb), aber auch schlecht, und zwar wenn ein User einen Satz ewig gesperrt hat, weil er z. B. das Stammdatenprogrammm offengelassen hat.Satzschutz wird in Oracle durch ein "select for update nowait" bewerkstelligt.
Alle anderen Programm müssen dann auch mit "select for update nowait" arbeiten, sonst wird bei einem Update auf den gesperrten Datensatz so lange gewartet, bis er freigegeben ist (und das kann u. U. dauern, siehe Stammdatenprogramm offenlassen).
Schickt man vor dem Update ein "select for update nowait" ab, dann wirft dieses bei bestehendem Satzschutz einen Datenbankfehler.