Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

BLOBs löschen Oracle

105 views
Skip to first unread message

Michael Jakobs

unread,
Aug 13, 2002, 8:39:26 AM8/13/02
to
Hallo zusammen,

da unser Oracle Experte gerade in seinem wohlverdienten Urlaub weilt
muss ich hier mal um Rat fragen.

Es geht um Oracle 8.1.6 auf Linux. Ich habe auf (glücklicherweise auf
dem Testrechner) das Problem das ein Tablespace (bestehend aus 4
Dateien) vollgelaufen ist. DBA-Studio sagt mir, dass 3 ganz voll sind
und eine Datei noch knapp 150 MB frei hat.
Der Hauptteil des Platzes wird von Ausdrucken benutzt, die als BLOB's
in einer Tabelle gespeichert sind.
Per "delete from table where report = 'blafasel'" habe ich ca. 1/4 der
Einträge aus der Tabelle gelöscht. Das hat auch ohne Probleme
funktioniert. Dabei müsste eigentlich sogar mehr Platz freiwerden, da
es sich bei den gelöschten Einträgen um Crystal Reports handelte, die
'ne Menge Platz benötigen.

Allerdings sagt mir das DBA-Studio, dass nicht mehr Platz freigworden
ist?!
Habe ich irgendwas übersehen? Oder wird DB-Speicher, der mal durch
BLOB's belegt war nicht wieder freigegeben?

Bis dann
Michael Jakobs


Gregor Theis

unread,
Aug 13, 2002, 3:24:05 PM8/13/02
to
Hallo Michael

"Michael Jakobs" <michael...@web.de> schrieb im Newsbeitrag
news:5tuhlu097eh0e0obe...@4ax.com...

Das ist ganz normal in ORACLE. Eine Tabelle gibt ihren Speicher nicht
mehr freiwillig her :-). Du hast jetzt zwar Löcher in der Tabelle,
aber die belegten Extents sind nicht freigegeben worden und die
sogenannte High Water Mark der Tabelle hat sich nicht nach unten
verschoben.

Die Löcher in der Tabelle sind, sobald die einzelnen DB Blocks unter
einen bestimmten Füllungsgrad gefallen sind, wieder in die Freelist(s)
eingefügt worden und können jetzt für neue Daten verwendet werden.

Um den Platz wierderzugewinnen, muß man die Tabelle(n) reorganisieren
z.B. durch:
- alter table ... move ..., alter index ...rebuild... in einer
entsprechenden Kombination
- Tabelle exportieren, truncaten/droppen, Tabelle importieren
(Vorsicht bei Foreign Keys)

Die Frage ist, ob Du das machen mußt. Wenn Deine Daten in der
Tabelle wachsen, aus der Du gelöschts hast, wird die Tabelle
erst einmal nicht weiter wachsen (Löcher stopfen). Wenn Du an
einer anderen Stelle Wachstum hast, wirst Du um eine Reorganisation
nicht herumkommen (ist eventuell ein alter tablespace add datafile
eine Option :-).

Einen schönen Tag noch

Gregor
--
-----------------------------------------------------------------------
Dipl.-Ing. Gregor J. Theis (3x ORACLE OCP DBA 8, 8i, 9i)
mailto:gregor...@ib-theis.de http://www.ib-theis.de

Michael Jakobs

unread,
Aug 15, 2002, 5:52:30 AM8/15/02
to
On Tue, 13 Aug 2002 21:24:05 +0200, "Gregor Theis"
<gregor...@ib-theis.de> wrote:

Hi,

>Das ist ganz normal in ORACLE. Eine Tabelle gibt ihren Speicher nicht
>mehr freiwillig her :-). Du hast jetzt zwar Löcher in der Tabelle,
>aber die belegten Extents sind nicht freigegeben worden und die
>sogenannte High Water Mark der Tabelle hat sich nicht nach unten
>verschoben.

Ok, danke. Dann hatte ich das falsch im Gedächtnis, ich dachte bei
BLOB sei das etwas anders, aber naja so kann man sich täuschen.

>Die Löcher in der Tabelle sind, sobald die einzelnen DB Blocks unter
>einen bestimmten Füllungsgrad gefallen sind, wieder in die Freelist(s)
>eingefügt worden und können jetzt für neue Daten verwendet werden.

Also iwe bei "normalen" Tabellen auch.


>Um den Platz wierderzugewinnen, muß man die Tabelle(n) reorganisieren

Das hatte ich befürchet. Da es ein Testsystem ist werde ich mir das
vielleicht mal vornehmen. Zuerst mal habe ich die die Datafiles
vergrößert, das reicht mir erstmal.

>nicht herumkommen (ist eventuell ein alter tablespace add datafile
>eine Option :-).

Wenn''s gar nicht mehr reicht werde ich halt ein weiteres File
anlegen, ist wahrscheinlioch schneller und einfacher als ein Reorg
:-). Aber da Testsystem vielleicht auch Reorg, mal sehen.

Danke für die Info!

Grüße
Michael

0 new messages