Skip to Main Content

 

Auswahl  

Interessantes zum Recycle Bin-Konzept 

Oracle
DBA:SQL
RDBMS 10.x
12.12.18 (MP)
07.07.23(NN)
SQL , DBA , Neuerungen 10g

Passende Schulungen zum Thema

Haben Sie sich vielleicht schon einmal gewundert, warum Sie nach dem Löschen einer Tabelle keinen freien Speicherplatz gewonnen haben, aber dafür plötzlich Objekte mit Namen BIN$c7WXyzMkT1q9DglxITmbRw==$0 (oder so ähnlich) vorhanden sind

Das liegt an einem Feature names RECYCLE BIN.

Durch einen (alten) DROP TABLE-Befehl wird eine Tabelle nicht mehr - wie in den vorangegangenen Versionen - endgültig gelöscht und der Speicherplatz sofort freigegeben, sondern die Tabelle und alle darauf liegenden Indizes (inkl. Constraints) werden umbenannt und dem Recycle Bin zugeordnet. Der Inhalt des Recycle Bin wird somit weiter zur Quota des Benutzers gezählt.
 

Views zu Recycle Bin

Folgende Befehle zeigen den Inhalt des eigenen "Papierkorbs" an:

SELECT * FROM recyclebin;
-- oder
SELECT * FROM user_recyclebin;
-- oder
SHOW RECYCLEBIN

Und über folgenden SELECT kann sich der Administrator den Recycle Bin der gesamten Datenbank anzeigen lassen:

SELECT * FROM dba_recyclebin;

Einsatz des Recycle Bin

Im ersten Beispiel soll die Tabelle EMP gelöscht und anschließend wieder hergestellt werden.

DROP TABLE emp;

SELECT object_name, object_type FROM user_objects
     WHERE object_name LIKE 'BIN$%';

OBJECT_NAME                    OBJECT_TYPE
------------------------------ -------------------
BIN$c7WXyzMkT1q9DglxITmbRw==$0 INDEX
BIN$vvz7kZGhSoqCVWbdTtoSbQ==$0 TABLE

Hinweis:

Die gelöschten Objekte werden nicht mehr in der USER_OBJECTS-View angezeigt. Gesehen werden sie nur noch in der View USER_RECYCLEBIN oder über:

SHOW RECYCLEBIN

ORIGNAME_PLUS_SHOW_RECYC OBJECTNAME_PLUS_SHOW_RECYC     OBJTYPE_PLUS_SHOW_RECYC 
DROPTIME_PLUS_SHOW_
------------------------ ------------------------------ ----------------------- -------------------
EMP                      BIN$vvz7kZGhSoqCVWbdTtoSbQ==$0 TABLE                   2018-05-26:09:42:33

FLASHBACK TABLE emp TO BEFORE DROP; 
-- die Tabelle wird unter ihrem alten Namen wieder hergestellt.

Indizes und Constraints bekommen beim Flashback ihren alten Namen nicht automatisch wieder. Sie müssen extra umbenannt werden:

ALTER INDEX "BIN$c7WXyzMkT1q9DglxITmbRw==$0" RENAME TO pk_emp;

ALTER TABLE emp RENAME CONSTRAINT "BIN$c7WXyzMkT1q9DglxITmbRw==$0" 
       TO pk_emp;

Im zweiten Beispiel wird die Tabelle EMP endgültig gelöscht und der Speicherplatz freigegeben.

DROP TABLE emp PURGE;

-- alternativ
DROP TABLE emp;
PURGE TABLE emp;
-- oder
PURGE RECYCLEBIN; 
-- alle Objekte aus dem Benutzer-Papierkorb werden endgültig gelöscht

 

Ausschalten des Recycle Bin

Vielleicht erscheint dem ein oder anderen Benutzer das Recycle Bin-Konzept überflüssig und er möchte gerne auf dieses Feature verzichten. Da aus Gewohnheit die PURGE-Option beim Löschen aber vergessen wird und der "Papierkorb" somit noch einmal separat geleert werden muss, kann dieses Verhalten auch ausgeschaltet werden.

SHOW PARAMETER recyclebin
ALTER SESSION SET recyclebin = OFF; 
-- oder
ALTER SYSTEM  SET recyclebin = OFF;

Weitere Tipps zu Recycle Bin

Tabellen der Benutzer SYS und SYSTEM werden nicht in den Recycle Bin verschoben."      

Beim Löschen von Tablespaces oder Benutzern werden die Tabellen nicht in den Recycle Bin verschoben."      

SELECT-Zugriffe sind auf die Tabellen des Recycle Bin unter dem vom System-generierten Namen möglich. DDL- und DML-Anweisungen sind nicht zulässig und ergeben den Fehler ORA-38301."      

Die Objekte im Recycle Bin werden automatisch gelöscht, wenn die Quota eines Benutzers ausgeschöpft wäre oder ein Tablespace erweitert werden müsste, weil kein Platz mehr verfügbar ist."  

Beim Wiederherstellen einer Tabelle müssen eventuelle Fremdschlüssel manuell erzeugt werden."      

Weitere Interessante Kurs-Tipps zum Thema