Veröffentlicht: von

ALTER TABLE

  1. Bei einem ALTER-Table MODIFY Spalte gibt es keine automatische Datentypkonvertierung, d.h. das Ändern einer Spalte wird abgewiesen, wenn die Spalte Daten enthält und der Datentyp nicht passt oder die Länge , z.B. VARCHAR(100) nicht ausreicht.
  2. ALTER Table MODIFY Spalte kann nur ausgeführt werden, wenn die zugrunde liegenden  CONSTRAINTS erfüllt bleiben.
  3. Das Schlüsselwort COLUMNS kommt in ALTER TABLE ADD nicht vor: ALTER TABLE Test ADD Spaltenname; ist korrekt.  Aber um die Verwirrung zu erhöhen ist ALTER TABLE Test RENAME COLUMN Spalte to Spalte_neu ; korrekt.
  4. Ein CONSTRAINT löscht man mit einem ALTER TABLE DROP CONSTRAINT, nicht mit DROP CONSTRAINT.
  5. Alle DDL-Befehle, wie ALTER, CREATE oder DROP beinhalten ein automatisches COMMIT.
  6. Man kann eine Spalte in einer Tabelle mit ALTER TABLE XYZ DROP Spalte löschen, alternativ kann man eine Spalte auch auf UNUSED setzen: ALTER TABLE XYZ SET UNUSED  Spalte;.  Allerdings ist die Spalte auch nach einem UNUSED nicht mehr verfügbar (RECOVER) , der Befehl dient nur dazu, die Performance zu erhöhen.
  7. Mit ALTER TABLE table_name DROP UNUSED COLUMNS; werden alle UNUSED COLUMNS gelöscht.
  8. Ein ALTER TABLE DROP PRIMARY KEY oder ALTER TABLE DROP UNIQUE löscht auch den zugrunde liegenden Index.
  9. Ein  CREATE TABLE oder ein ALTER TABLE kann nur eine USING-Index-Klausel benutzen, die sich auf einen Primärschlüssel oder einen UNIQUE-Index bezieht (Frage 10, Seite 481).

FLASHBACK

  1. Mit diesem ORACLE-Befehl kann man komplette Tabellen rekonstruieren, Daten wiederherstellen oder SELECTs auf einem Datenbestand in der Vergangenheit ausführen.
  2. Dazu muss der RECYCLEBIN mit ALTER SESSION SET recyclebin ON; eingestellt sein.
  3. PURGE Table TEST;  oder DROP TABLE Test PURGE;  löscht die Tabelle TEST  aus dem Papierkorb. danach ist kein FLASHBACK mehr möglich.
  4. Man kann mit FLASHBACK eine Tabelle auch auf einen früheren Zeitpunkt (SCN, TIMESTAMP oder RESTORE POINT) zurückspielen, allerdings nur, wenn die Tabelle mit ALTER TABLE test_f ENABLE ROW MOVEMENT; darauf vorbereitet wurde.
  5. Die SCN ist eine Art numerischer Schlüssel für Transaktionen, der vom Oracle-System automatisch mit jeder Transaktion vergeben wird.
  6. Flashbacks können nur ausgeführt werden, wenn vorher kein ALTER TABLE auf die Tabelle ausgeführt wurde.
  7. FLASHBACKS fahren nur den letzten DROP-Befehl zurück, wenn Tabellen zweimal glöscht wurden.

Syntax für flashback

CREATE TABLE Test_f (NR Number);
INSERT into Test_f VALUES (2);
COMMIT;
DROP TABLE test_f;
FLASHBACK TABLE TEST_F TO BEFORE DROP;
SELECT * FROM test_F;

Externe Tabellen

  1. Eine externe Tabelle ist eine Tabelle, deren Metadaten in der Datenbank abgespeichert ist, während die Daten selber außerhalb der Datenbank liegen. Sie werden dazu eingesetzt, Dateien, die normalerweise nicht in der Datenbank gespeichert sind, für einen SELECT zugänglich zu machen. Sie ersetzen damit Werkzeuge wie SQL*LOADER oder Data Pump.
  2. Die Daten einer externen Tabelle liegen in einem Verzeichnis , dass auf dem Datenbankserver mit dem Befehl CREATE DIRECTORY angelegt werden muss.
  3. Externe Tabellen können mit einem SELECT abgefragt werden, aber es kann keine andere DML-Operation darauf angewendet werden.
  4. Externe Tabellen können keine Spalten vom Typ BLOB, CONSTRAINT oder UNUSED Spalten besitzen.

Directory

  1. Ein CREATE DIRECTORY NAME AS ‚Verzeichnis‘, erzeugt einen Zeiger im Dateisystem des Datenbankservers.
  2. DIRECTORY werden für BFiles und externe Tabellen verwendet.
  3. Das Directory ist nur ein Zeiger und prüft nicht, ob das Verzeichnis tatsächlich existiert und beschreibbar ist.
  4. CREATE DIRECTORY erfordert ein eigenen SYSTEM-GRANT und sollte normalerweise nur von Systemadministrator ausgeführt werden.
  5. Lesender /Schreibender Zugriff wird durch ein GRANT READ | WRITE on  directory to user;  vergeben.