So löschen Sie Oracle LOB

7

Die folgende Abfrage kann verwendet werden, um die Datenbankobjekte des Benutzers aufzulisten:

%Vor%

Es gibt einige Einträge, bei denen der Objekttyp LOB ist.

Wie können diese LOB-Objekte in Oracle gelöscht werden?

    
byneri 21.08.2013, 20:51
quelle

2 Antworten

16

Ein Szenario, in dem Sie ein LOB in user_objects sehen können, aber der Join zu user_lobs nichts findet, wenn die Tabelle bereits gelöscht wurde, aber befindet sich im Papierkorb .

%Vor%

Wie erwartet, zeigt Justins Abfrage die Spalte:

%Vor%

Nun findet Justins Abfrage nichts:

%Vor%

Aber es ist immer noch in user_objects :

%Vor%

Und Sie können es im Papierkorb sehen:

%Vor%

Das LOB ist immer noch auf der Festplatte vorhanden und verwendet Speicher, was Ihrer Meinung nach das Problem ist. Um Ihre Frage zu beantworten, müssen Sie die gesamte Tabelle löschen, um den LOB wirklich fallen zu lassen und seinen Speicher freizugeben:

%Vor%

Interessanterweise sehen Sie diesen Effekt nicht, wenn Sie das LOB-Segment benennen:

%Vor%

Wenn Sie die obigen Schritte wiederholt haben, ist der Eintrag von user_objects nach drop verschwunden.

%Vor%

Der Speicher wird immer noch verwendet und Sie müssen ihn immer noch löschen, um ihn freizugeben, er sieht im Datenwörterbuch etwas konsistenter aus. Das sieht also höchstens wie ein (sehr kleiner) Fehler aus. Es könnte sich auf das Verhalten beziehen, auf das in Support-Notiz 394442.1 verwiesen wird.

    
Alex Poole 22.08.2013, 07:43
quelle
3

Das LOB-Objekt wird gelöscht, wenn Sie die Tabelle mit der verknüpften LOB-Spalte löschen oder die LOB-Spalte aus dieser Tabelle löschen. Sie können sehen, welche Spalte ein bestimmtes LOB-Objekt unterstützt, indem Sie abhängig von Ihren Berechtigungen DBA_LOBS , ALL_LOBS oder USER_LOBS abfragen.

Zum Beispiel

%Vor%

zeigt Ihnen, welche Tabelle und welche Spalte jedes der LOB -Objekte in Ihrem Schema unterstützt.

    
Justin Cave 21.08.2013 21:02
quelle

Tags und Links