it-swarm.com.de

Unterschied zwischen Drop-and-Drop-Löschung in Oracle

Ich verwende Oracle Database und bin etwas verwirrt über Drop- und Purge-Befehle. Tatsächlich macht für mich beide dasselbe. Entfernt die Tabelle mit Schema aus der Datenbank. Was ist der Hauptunterschied zwischen diesen beiden?

  1. Tabellenname für Drop Table
  2. Drop Table Tablename Purge;
20
user769394

Normalerweise wird eine Tabelle (ab Oracle 10g) in den Papierkorb verschoben, wenn sie gelöscht wird. Wenn jedoch auch der Modifikator purge angegeben wird, wird die Tabelle nicht wiederherstellbar (vollständig) aus der Datenbank gelöscht.

38
Randy

Oracle Database 10g führt eine neue Funktion zum Löschen von Tabellen ein. Wenn Sie Eine Tabelle löschen, gibt die Datenbank den der -Tabelle zugeordneten Speicherplatz nicht sofort frei. Stattdessen benennt die Datenbank die Tabelle um und platziert sie in einem Papierkorb. Dort kann sie später mit der Anweisung FLASHBACK TABLE wiederhergestellt werden, wenn Sie feststellen, dass Sie die Tabelle fehlerhaft gelöscht haben. Wenn Sie den zur Tabelle gehörenden Speicherplatz sofort freigeben möchtenWenn Sie die DROP TABLE-Anweisung ausgeben, fügen Sie die PURGE-Klausel wie folgt ein DROP TABLE-Mitarbeiter PURGE; .__ wenn Sie die Tabelle löschen und den mit ihr verknüpften Bereich in einem einzigen Schritt freigeben möchten. Wenn Sie PURGE angeben, legt die Datenbank die Tabelle und ihre abhängigen Objekte nicht in den Papierkorb .__ ab. HINWEIS: Sie können eine DROP TABLE-Anweisung nicht mit der PURGE -Klausel rückgängig machen, und Sie können sie nicht wiederherstellen die Tabelle, wenn Sie sie mit der PURGE-Klausel ablegen. Diese Funktion war in früheren Versionen nicht verfügbar.

6
Vignesh

Ein Link zu einem Asktom-Artikel: http://asktom.Oracle.com/pls/asktom/f?p=100:11::::P11_QUESTION_ID:32543538041420

Grundsätzlich werden bei Oracle10 alle abgelegten Tabellen in den Papierkorb verschoben, von wo aus sie gelöscht werden können. Bei der Bereinigung überspringen Sie grundsätzlich den Teil des Papierkorbs und löschen die Tabelle ohne die Option, die Aktion rückgängig zu machen.

3
phil

Aus dem @ Randy-Kommentar geht Folgendes hervor:

(1) Tabellenname der Drop-Tabelle:

Ohne purge kann sich die Tabelle im RECYCLEBIN oder USER_RECYCLEBIN befinden. Dies kann mit dem Befehl FLASHBACK wiederhergestellt werden. Dies ähnelt den Dateien, die wir auf unserem Windows-Desktop löschen, die in den Papierkorb verschoben werden und die wiederhergestellt werden können.

(2) Löschen von Tabellennamen in der Drop-Tabelle:

Wenn Drop zusammen mit Purge angegeben wird, wird der Tablespace freigegeben und kann nicht wiederhergestellt werden. (Wie Umschalt + Löschen auf dem Desktop)

Das folgende Beispiel gibt ein praktisches Beispiel:

create table test_client (val_cli integer, status varchar2(10));
drop table test_client ;

select tablespace_name from all_tables where owner = 'test' and table_name = 'TEST_CLIENT';

SELECT * FROM RECYCLEBIN where ORIGINAL_NAME='TEST_CLIENT';

SELECT * FROM USER_RECYCLEBIN where ORIGINAL_NAME='TEST_CLIENT';

FLASHBACK TABLE test_client  TO BEFORE DROP;

select tablespace_name from all_tables where owner = 'test' and table_name = 'TEST_CLIENT';

drop table test_client purge;

select tablespace_name from all_tables where owner = 'test' and table_name = 'TEST_CLIENT';
1
sandy v
SQL>drop table table_name;

Dieser Befehl löscht die Tabelle mit dem Namen Tabellenname, wird jedoch intern in den Papierkorb von Oracle verschoben (ähnlich wie beim Löschen von Dateien/Ordnern mit Delete Schlüssel unter Windows OS).
Vorteile:
1. Wir können die oben gelöschte Tabelle bei Bedarf wiederherstellen.
Nachteile:
1. Besetzt immer noch eine gewisse Menge an Speicher.

SQL>drop table table_name purge;

Dieser Befehl löscht die Tabelle tabellenname vollständig aus der Datenbank (ähnlich wie das Löschen von Dateien/Ordnern mit Shift + Delete Taste unter Windows).

Die Vor- und Nachteile sind umgekehrt.

0
Devaraj B

Die folgende Anweisung wird die Tabelle löschen und in den Papierkorb legen.

DROP TABLE emp_new;

Die folgende Anweisung löscht die Tabelle und löscht sie auch aus dem Papierkorb.

DROP TABLE emp_new PURGE;

0
Danish Rizvi