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?