Buchgenerator (deaktivieren)

Oracle: Table

Aus Wikibooks

Wechseln zu: Navigation, Suche
Wikibooks buchseite.svg Zurück zu " ORACLE Datenbank-Objekte " | One wikibook.svg Hoch zu " Inhaltsverzeichnis " | Wikibooks buchseite.svg Vor zu " View "



Inhaltsverzeichnis

[Bearbeiten] Tabellendefinition

Es gibt drei Arten von Tabellen:

  • Relationale Tabellen
  • Objekttabellen
  • XML Tabellen

Die relationale Tabelle ist die Grundstruktur um Daten zu halten. Sie ist in der Form von Spalten (Columns) und Zeilen (Rows) aufgebaut.

 Syntax:
 
 CREATE TABLE <schema.table>(
   <relational properties>
 );
 Beispielscript:
 
 CREATE TABLE reltable(
   id         NUMBER,
   username   VARCHAR2(50),
   email      VARCHAR2(50),
   job        VARCHAR2(50)
 );

RELTABLE

ID USERNAME EMAIL JOB
1 BBLOCKSBERG bb@besen.hex Hexe
2 BBLÜMCHEN bb@z.oo Dickhäuter

Objekttabellen erweitern relationale Tabelle um die Möglichkeit der Nutzung von Objekttypen. Mindestens eine Spalte der Tabelle beinhaltet die Definition eines Objekttyps.

OBJTABLE

ID USERINFO
1 (Objectdata: BBLOCKSBERG bb@besen.hex Hexe)
2 (Objectdata: BBLÜMCHEN bb@z.oo Dickhäuter)

OBJTYPE

USERNAME EMAIL JOB

. . .

[Bearbeiten] Check-Constraints

Bereits bei der Definition einer Datenbank, kann man festlegen, welche Werte oder Wertebereiche für einen Spaltenwert erlaubt oder verboten sind. Dadurch wird die Integrität der Datenbank erhöht, da nur Werte in die Datenbank eingepflegt werden können, die diesen Regeln entsprechen. Beispiel:

CREATE TABLE TEST (
  T1      VARCHAR(10) NOT NULL,
  T2      NUMBER(2)   DEFAULT 10,
  T3      NUMBER(3,2) CHECK T3 >=5 
) TABLESPACE T;


NOT NULL Bestimmt, dass der Spalte im Datensatz ein Wert zugeordnet werden muss.
DEFAULT Setzt einen Vorgabewert
CHECK Ist eine Boolesche Regel, die Wahr sein muß, damit der Datensatz akzeptiert wird

[Bearbeiten] Primärschlüssel

...

[Bearbeiten] Fremdschlüssel

...

[Bearbeiten] Partitionierung

Partitionierung nennt man den Vorgang aus einer großen Tabelle zwecks Performanzoptimierung in kleinere Teiltabellen zu zerlegen.

CREATE TABLE TEST (
  T1      VARCHAR2(10) NOT NULL,
  T2      NUMBER,
  T3      NUMBER  
) partition BY range (T2) (
  partition P1_TEST VALUES less than (11)       tablespace P1,
  partition P2_TEST VALUES less than (MAXVALUE) tablespace P2,
);

Es gibt noch weitere Arten der Partitionierung:

  • Hash-Partitionierung
  • List-Partitionierung

Ferner kann man Partitionen noch weiter in Sub-Partitionen unterteilen.

[Bearbeiten] temporäre Tabellen

...

[Bearbeiten] externe Tabellen

...

[Bearbeiten] LOBs

...

[Bearbeiten] Datadictionary-Views für Tabellen

...

[Bearbeiten] Tabellen verkleinern

Wenn man Sätze aus einer Tabelle löscht, dann wird der Speicherplatz im Tablespace trotzdem nicht freigegeben. Alle Datenblöcke, die einmal für die Speicherung von Daten für eine bestimmte Tabelle verwendet wurden, bleiben dieser Tabelle zugeordnet und können nicht zur Speicherung von Daten in anderen Tabellen benutzt werden. Wenn man eine Tabelle nur vorübergehend mit einem großen Datenvolumen gefüllt wurde und der Speicherplatz danach für andere Tabellen zur Verfügung gestellt werden soll, dann gibt es verschiedene Möglichkeiten:

  • ALTER TABLE MOVE TABLESPACE
  • EXPORT / drop Table / create Table / IMPORT
  • ALTER TABLE SHRINK SPACE

Die Varianten 1 und 2 haben den Nachteil, dass es eine Ausfallzeit gibt, in der andere Programme, die auf diese Tabelle zugreifen wollen, eine Fehlermeldung bekommen.

Die Variante 3 gibt es seit der Version 10g. Sie hat den Vorteil, dass die Tabelle nur durch einen Lock gesperrt wird. Andere Programme müssen so lange warten, bis die Verkleinerung fertig ist, sie bekommen aber keine Fehlermeldung.

Der Befehl ALTER TABLE SHRINK SPACE ist an bestimmte Bedingungen geknüpft:

Verkleinern kann man damit

  • Tabellen
  • Indizes
  • indexorganisierte Tabellen
  • Partitionen
  • Subpartitionen
  • LOB Segmente (ab Version 10.2)
  • Materialized Views

Voraussetzungen

  • Oracle RDBMS ab Version 10g.
  • Der Tablespace muss mit der Option SEGMENT MANAGEMENT AUTO angelegt sein.
  • Bei der Tabelle, die verkleinert werden soll, muss ROW MOVEMENT aktiviert sein.

Einschränkungen

  • Die Tabelle darf nicht komprimiert sein.
  • Die Tabelle darf keine FUNCTION BASED Indizes besitzen.
  • Die Mastertabelle einer ON COMMIT MATERIALIZED VIEW kann nicht verkleinert werden.
  • ROWID MATERIALIZED VIEWS müssen nach dem Verkleinern neu aufgebaut werden.
  • Tabelle darf keine LOB oder LONG Spalten besitzen (nur in Version 10.1).
  • Der Befehl SHRINK SPACE ist eine Art der Reorganisation. Dadurch ändern sich die ROWIDs.
 alter table test ENABLE ROW MOVEMENT;
 alter table test SHRINK SPACE;


Wikibooks buchseite.svg Zurück zu " ORACLE Datenbank-Objekte " | One wikibook.svg Hoch zu " Inhaltsverzeichnis " | Wikibooks buchseite.svg Vor zu " View "
Persönliche Werkzeuge