![]() |
Datenbank: Oracle • Version: 19c • Zugriff über: JDBC
Updates eines CLOB Feldes belegen unerwartet viel Datenträgerplatz (Oracle)
Umgebung:
* Betriebssystem Windows 2016 Server * DBMS Oracle 19c * Oracle Tablespaces mit max. 11 GB angelegt * Zugriff über JDBC Die Anwendung schreibt ein Protokoll in eine Oracle Datenbank, sie trägt dazu dazu per SQL UPDATE immer wieder einen längeren Text in ein und dasselbe CLOB Feld ein. (also beim ersten Update ist der Text eine Zeile, lang, beim zweiten Update zwei Zeilen, usw.). Das Protokoll kann einige wenige MB lang sein, es gibt in einem Lauf bis zu fünfhunderttausend Aktualisierungen des Felds. Erwartung: * der Tablespace sollte durch die Protokollierung nicht erheblich mehr Platz auf dem Datenträger belegen, als das Protokoll lang ist. Problem: * der belegte Platz auf dem Datenträger wächst während der Ausführung um mehrere Gigabyte an ** der belegte Platz ist eindeutig nur von der Tabelle belegt, die das CLOB Feld enthält ** es gibt nur einen einzigen Datensatz in dieser Tabelle, der aktualisiert wird Vermutung: * Oracle belegt bei jedem Update einen neuen Bereich auf dem Datenträger, speichert dort den neuen Wert, und gibt den Bereich mit dem vorherigen Wert nicht frei. Ist das ein bekanntes "Feature" bei Oracle Datenbanken, das man konfigurieren kann, oder deutet das eher auf einen Fehler in der Installation hin? |
AW: Updates eines CLOB Feldes belegen unerwartet viel Datenträgerplatz (Oracle)
Oracle kann verschiedene Transaktionssysteme. Neben dem klassischen Transaktionslog wird auch Multiversion Concurrency Control unterstützt.
Bei dieser datenbank/Tabelle scheint dies aktiviert zu sein. Bei einem Commit sollte der Speicherplatz aber dann durch nachfolgenden Updates Datensätzen genutzt werden. Läuft alles in einer Tranaktion ab? |
AW: Updates eines CLOB Feldes belegen unerwartet viel Datenträgerplatz (Oracle)
Zitat:
Ja, Transaktionen werden verwendet, allerdings sollte nach einem Abbruch (rollback) oder einem sauberen Ende (commit) der Anwendung der zwischendurch temporär belegte Speicher des Tablespace 'eigentlich' freigegeben werden. Er ist dann aber nicht mehr nutzbar. Nur ein truncate auf die Tabelle hilft anscheinend. |
AW: Updates eines CLOB Feldes belegen unerwartet viel Datenträgerplatz (Oracle)
Zitat:
Schon mal damit probiert? Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:01 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