AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Updates eines CLOB Feldes belegen unerwartet viel Datenträgerplatz (Oracle)
Thema durchsuchen
Ansicht
Themen-Optionen

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

Ein Thema von mjustin · begonnen am 16. Feb 2023 · letzter Beitrag vom 16. Feb 2023
Antwort Antwort
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
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#2

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

  Alt 16. Feb 2023, 15:01
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?
Markus Kinzler
  Mit Zitat antworten Zitat
mjustin

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

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

  Alt 16. Feb 2023, 15:11
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?
Multiversion Concurrency Control prüfe ich, vielen Dank für den Hinweis.

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.
Michael Justin
  Mit Zitat antworten Zitat
Benutzerbild von smallie
smallie

Registriert seit: 8. Jan 2013
19 Beiträge
 
Delphi 10.3 Rio
 
#4

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

  Alt 16. Feb 2023, 15:48
Nur ein truncate auf die Tabelle hilft anscheinend.
Hmm. Könnte die High Water Mark sein.

Schon mal damit probiert?

Zitat:
-- Shrink a LOB segment (basicfile only until 21c).
ALTER TABLE table_name MODIFY LOB(lob_column) (SHRINK SPACE);
ALTER TABLE table_name MODIFY LOB(lob_column) (SHRINK SPACE CASCADE);

https://oracle-base.com/articles/mis...k-space-online
"There are two hard things in computer science: cache invalidation, naming things, and off-by-one errors."
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:27 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz