Andreas_Sprosec_7439

Oracle Lobsegmente

Discussion created by Andreas_Sprosec_7439 on Mar 1, 2018

Sie fragen

Was ist der Inhalt von Lobsegmenten?

Und wir antworten …

Werden Dateien in Tabellenzeilen gespeichert, so kommen hierfür Large Objects zum Einsatz. Werden Binärdaten gespeichert, so verwendet man den Datentypen BLOB, (Binary Large Object) bei Zeichendaten den Datentypen CLOB (Character Large Object). Ein Large Object wird von der Datenbank anders gepeichert als normale Tabellenspalten: Letztere werden zu Zeilen zusammengefasst und dann in Datenbankblöcken abgelegt - Oracle speichert Daten zeilenorientiert. Large Objects werden dagegen in eigene LOB-Segmente ausgelagert, wenn sie mehr als 4000 Byte lang sind (für Experten: Mit der Klausel DISABLE STORAGE IN ROW kann man das Auslagern auch für kleinere LOBs erzwingen). Die Tabellenzeile selbst enthält nur noch einen Lob Locator.

 

Ein LOB-Segment kann auch in einem anderen Tablespace (und damit auf anderen Platten) liegen, als die eigentliche Tabelle. Dieses Verfahren stellt sicher, dass das Vorhandensein großer LOB-Datenmengen die Performance der anderen Tabellenspalten nicht wesentlich beeinflusst. Ein einzelner LOB in der Datenbank kann sehr groß werden: Das theoretische Limit liegt bei 2 hoch 32 minus 1, multipliziert mit der Blockgröße des Tablespace, in dem das LOB-Segment liegt. De-Facto bedeutet das 8 Terabyte, bei einer Blockgröße von 2KB, und 128 Terabyte bei einer Blockgröße von 32KB.

 

Neben dem Tablespace können für ein Large Object auch andere physikalische Parameter wie Buffer-Cache-Eigenschaften oder das Redolog-Verhalten individuell festgelegt werden.

Outcomes