![]() |
Datenbank: Oracle • Version: 10 • Zugriff über: ADO
Lesen aus einer Oracle Datenbank
Hallo liebe Datenbank Spezialisten,
Ich suche für folgendes eine Lösung. Ich greife auf eine Datenbanktabelle zu welche alle 5 Sekunden Truncated wird und anschließend wieder neu geschrieben, der Schreibvorgang dauert dann alles in allem ca 2,5 - 3,5 Sekunden. Wie kann ich nun vermeiden, das die Tabelle während ich alle 7 Sekunden am lesen bin gelöscht wird? Vielen Dank für eure Hilfe Martin |
AW: Lesen aus einer Oracle Datenbank
Hätte jetzt mal behauptet, dass du mit LOCK TABLE weiter kommst.
Aber warum zum Teufel wird die Tabelle alle 5 Sekunden geleert? Was steckt denn da für ein System dahinter? |
AW: Lesen aus einer Oracle Datenbank
Du solltest vielleicht mit einem Ereignis arbeiten und nicht pauschal alle 7 Sekunden lesen.
|
AW: Lesen aus einer Oracle Datenbank
Klingt nach Konzeptionsfehler, eine Spalte TimeStamp mit aufnehmen, nach dem Füllen auf aktuellen Zeit setzen und über eine Sicht zugreifen mit der Bedingung TimeStamp=(Select Max(Timestamp) from Tabelle).
Vor dem nächsten Füllen die älteren Sätze löschen, ohne TimeStamp füllen, anch dem Füllen TimeStamp setzen. Wenn Delete zu lange dauert, dann mit 2 Tabellen und Truncate arbeiten, über eine UNION VIEW zugreifen, wieder mit TimeStampeinschränkung. |
AW: Lesen aus einer Oracle Datenbank
Zitat:
Wenn ein Prozess A Daten in eine Tabelle einer Datenbank schreibt und gleichzeitig ein Prozess B im Polling-Betrieb in periodischen Abständen die Daten ausliest, dann ist das ein Mißbrauch der Datenbank. Datenbanken sind nicht geeignet als ein Weg zur Interprozesskommunikation. |
AW: Lesen aus einer Oracle Datenbank
Das Verfahren ist äußerst fragwürdig-wie schon von allen gesagt-, aber in einem Sonderfall sollte es funktionieren.
Bei einem einmaligen Vollselect auf die (gerade) gefüllte Tabelle ohne erneuten Zugriff (mit der Erwartung, dass noch was da ist). Nebenbedingung, kein(!) Table Lock, updates, usw. Wenn dieses merkwürdige Zugriffsverfahren aber in Deinen Händen liegt, solltest Du es schleunigst umbauen. |
AW: Lesen aus einer Oracle Datenbank
Zitat:
Martin |
AW: Lesen aus einer Oracle Datenbank
In dem von mir geschilderten Fall könntest Du durchkommen. Ein einmaliges Befüllen des Dataset sollte durch Oracle Transaktionsmechnismen abgedeckt sein, selbst wenn das Backend bereits wieder löscht/ gelöscht hat. Im schlechtesten Fall bekommst Du eine leere Menge.
Wenn Du beim Auslesen mit locks und Transaktionen anfängst, brichst Du (unnötiger Weise) dem anderen Prozess die Knochen. Wenn die Truncate/Insert Aktion zu umfangreich für das Zeitfenster ist, gehts ebenso schief. Du solltest das Verfahren jedenfalls reklamieren, wofür immer das auch gedacht ist oder war. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:53 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz