# Tabelle in Oracle endgültig löschen



## AKST (18. Oktober 2004)

Hallo Leute,
wenn ich im Oracle enterporise Manager oder per SQL eine Oracle-Tabelle lösche, dann bleiben diese Bin$csefwev... Dateien übrig in denen die Informationen der gelöschten Tabelle stehen. Wie kann ich diese löschen?


----------



## Exceptionfault (18. Oktober 2004)

Kannst du das vielleicht etwas genauer beschreiben ?
Eine Tabelle hat in Oracle nichts mit einer Datei zu tun, als Dateien werden nur Datafiles abgelegt in denen mehrere Tabellen und alle anderen DB Objekte abgelegt werden.

Meinst du vielleicht v$ Views ?
Wenn ja, arbeitest du mit 10g ?

10g bietet Flashback Queries mit denen man Daten aus der Vergangenheit rekonstruieren kann. Wie lange hängt am Parameter "UNDO_RETENTION" der in der INIT.ORA festgelegt wird. Wenn es also wirklich was mit der UNDO_RETENTION zu tun hat brauchst du die Daten nicht zu löschen, die verschwinden nach der gesetzten Zeit von alleine.


----------



## mschuetzda (18. Oktober 2004)

Hallo Exceptionfault,

AKST meint.. diese Bin$csefwev...   Tabellen oder Views (weiß ich auch nicht mehr)
ich habe die auch schon bei 10g gesehen, habe aber (noch) keine Ahnung was es damit auf sich hat.

Bin auch für jede Info dazu dankbar.
mfg


----------



## Exceptionfault (18. Oktober 2004)

Also, leider hab ich noch keine 10er hier laufen aber es hört sich wirklich nach dem Flashback an.

In 10g gibt es eine Art Mülleimer in dem erstmal alles abgelegt wird, eben solange wie die UNDO_RETENTION time gesetzt ist.

Es gibt zwei Möglichkeiten wie man die Einträge los wird:

1.) Die Zeit runtersetzen, dann fliegen die Einträge von alleine raus, sollte man sowieso machen wenn man nicht auf Flashback angewiesen ist, denn das hält den UNDO TS kleiner.

2.) Order die Tabelle mittels
DELETE TABLE emp PURGE; 
löschen, damit kommt sie gar nicht in den recyclebin.
Nachträglich kann sie auch über 
PURGE TABLE emp; aus dem Mülleimer gelöscht werden.

Probiert mal den Befehl
SHOW RECYCLEBIN
Damit solltet ihr alle gelöschten Objekte der letzten Zeit sehen...


----------



## Exceptionfault (18. Oktober 2004)

Habs nochmal nachgelesen, der Parameter heisst
DB_FLASHBACK_RETENTION_TARGET
Ist default auf 1440 minuten.
Der rest sollte aber stimmen.


----------



## AKST (19. Oktober 2004)

Danke für die Tips, probiere es heute abend aus.

P.S. ja ich habe die 10g-Version und meinte die Tabellen im RecycleBin


----------



## AKST (19. Oktober 2004)

Wenn ich show recyclebin angeben, dann wird nichts angezeigt. Die Tabellen mit den Namen "BIN$bdgnbr" stehe seit einer wopche da und verschwinden nicht. Wenn ich sie löschen will, sagt mir der Enterprismanager sinngemäß, dass "Objekte im Reclebin nicht gelöscht werden können".

Wie kann ich den Wert des Parameters "DB_FLASHBACK_RETENTION_TARGET" sehehn und verändern?

P.S. habe leider nur ein Oraclebuch für Programmierer und nicht für Admins.


----------



## Exceptionfault (22. Oktober 2004)

Hast du es mal mit PURGE TABLE xyz versucht ?

Die DB_FLASHBACK_RETENTION_TARGET siehst du z.B. über 

SHOW PARAMETER FLASHBACK

Werd mir bei Gelegenheit auch mal ne 10er installieren und das untersuchen, bin nur grade unterwegs in der Schweiz, daher etwas kompliziert.

Der Parameter wirkt übrigens auch über ein shutdown, d.h. wenn dort 1440 Minuten angegeben ist, dann sind damit 1440 "Betriebsminuten" gemeint. Es könnte auch sein, dass es ein Mindestwert ist und die Daten solange im Recyclebin bleiben bis der Platz im Undo TS für was anderes gebraucht wird (?). Muss ich mal testen...


----------



## AKST (31. Oktober 2004)

Hallo,

wenn ich 

```
PURGE TABLE scott.BIN$SX8l3oqbQlmY4t/11Ns85Q==$0
```
eingebe erhalte ich folgende Fehlermeldung.
"FEHLER in Zeile 1:
ORA-00933: SQL-Befehl wurde nicht korrekt beendet"


----------



## Exceptionfault (1. November 2004)

Du kannst auch nicht den kryptischen Namen der Tabelle angeben, sondern den wie sie vorher hies, also vor dem DROP Table.

Bin grade am runterladen von 10g, werd es bis heute Abend sicher mal testen.


----------



## AKST (2. November 2004)

Das dachte ich mir schon  nur weiss ich leider nicht wie diese Tabelle vorher hiess. Das war eine automatisch erstellte Beispiel-Tabelle für den Benutzer (Schema) Scott. Das war irgendwas mit employee oder so. Wie kann ich denn rausfinden, wie die Tabelle vorher hieß?


----------



## Exceptionfault (3. November 2004)

Also, ich habs nun endlich geschafft mir ne 10g zum testen zu installieren und habe mal versucht das mit den gelöschten Tabellen nachzustellen. Dabei kam etwa folgendes raus:


Zuerst ein paar Tabellen angelegt und sie wieder gelöscht. Dann bekam ich folgendes Ergebnis:

```
SQL> select table_name from user_tables;

TABLE_NAME
------------------------------
TEST
BIN$3DMfL68YTLmNrsD4MwFa1g==$0
BIN$TlJf6UdKQtWlYOIKgg2cvQ==$0
```

Nun mal schauen was so im Mülleimer liegt:


```
SQL> show recyclebin
ORIGINAL NAME    RECYCLEBIN NAME                OBJECT TYPE  DROP TIME
---------------- ------------------------------ ------------ -------------------
DBA_LOCKS_TEMP   BIN$TlJf6UdKQtWlYOIKgg2cvQ==$0 TABLE        2004-11-03:21:54:36
LOCK_HOLDERS     BIN$3DMfL68YTLmNrsD4MwFa1g==$0 TABLE        2004-11-03:21:54:36
```

Ok, nun die Bereinigung:

```
SQL> purge table LOCK_HOLDERS;

Tabelle bereinigt.

SQL> show recyclebin
ORIGINAL NAME    RECYCLEBIN NAME                OBJECT TYPE  DROP TIME
---------------- ------------------------------ ------------ -------------------
DBA_LOCKS_TEMP   BIN$TlJf6UdKQtWlYOIKgg2cvQ==$0 TABLE        2004-11-03:21:54:36

SQL> select table_name from user_tables;

TABLE_NAME
------------------------------
TEST
BIN$TlJf6UdKQtWlYOIKgg2cvQ==$0
```

Bei mir klappt das mit SHOW RECYCLEBIN.


----------



## AKST (4. November 2004)

Komisch, wenn ich mich in SQL*Plus worksheet als Schema Scott anmelde, dann zeigt er mir immer den Recylebin-Ordner von Schema SYS. 

Danke für deine Hilfe.


----------

