Einzelnen Beitrag anzeigen

mjustin

Registriert seit: 14. Apr 2008
3.006 Beiträge
 
Delphi 2009 Professional
 
#1

Updates eines CLOB Feldes belegen unerwartet viel Datenträgerplatz (Oracle)

  Alt 16. Feb 2023, 14:56
Datenbank: Oracle • Version: 19c • Zugriff über: JDBC
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?
Michael Justin
  Mit Zitat antworten Zitat