Oracle Datenbank Glossar

Hier finden Sie kurz zusammengefasste Informationen zu wichtigen Begriffen rund um Oracle Datenbanken. Alle Begriffe sind – wo sinnvoll – in deutsch und englisch benannt.

ARCH – ARCHIVER PROCESS

Der Archiver Process archiviert automatisch die Online Redo Log Dateien und hält dadurch alle Änderungen einer Datenbank fest. Erst nachdem eine Online Redo Log Datei archiviert wurde, kann sie wieder beschrieben werde.

Voraussetzung: Die Datenbank muss im ARCHIVELOG Modus laufen und die Archivierung aktiviert sein.

BUFFER CACHE

Im BUFFER CACHE werden die verwendeten Datenblöcke gespeichert. Der Speicher wird über einen LRU-Algorithmus (Least Recently Used) verwaltet. Dadurch werden die Blöcke, die am häufigsten gebraucht werden, immer im Speicher gehalten. Die Größe des BUFFER CACHE wird durch die Initialisierungs-Parameter DB_BLOCK_SIZE und DB_BLOCK_BUFFERS festgelegt.

Data Dictionary Views: V$BUFFER_POOL, V$BUFFER_POOL_STATISTICS

CKPT – CHECKPOINT PROCESS

Bei einem Checkpoint veranlasst der Checkpoint Process den DBWR alle „dirty“ Blöcke aus dem Buffer Cache in die Datendateien zu schreiben und synchronisiert alle Datendateien und die Kontrolldatei.

COLLECTION

Collection ist ein Überbegriff für die Array-Datenypen in PL/SQL, also:

    • Varray
    • Nested Table
    • Index By Table (auch PL/SQL Table, ab Version 9.2: Associative Array)

DATENBANK – DATABASE

Unter dem Begriff Datenbank versteht man den passiven Teil eines Datenbank-Systems – alle Datenbankdateien mit all den darin enthaltenen Informationen:

    • Datendateien
    • Steuerdateien
    • Redologdateien
    • INIT.ORA Datei

Data Dictionary Views: V$DATABASE, V$DATAFILE

DATENBLOCK – DATA BLOCK

Ein Datenblock ist die kleinste physikalische Einheit, die Oracle zum Speichern von Daten verwendet. Der Wert wird bestimmt über den Initialisierungsparameter DB_BLOCK_SIZE (2KB – 32KB).

Bis Oracle 8i kann nur eine Blockgröße für die gesamte Datenbank definiert werden (dies geschieht beim Erzeugen der Datenbank). Ab Oracle 9i können bis zu fünf verschiedene Blockgrößen definiert werden.

Data Dictionary Views: V$PARAMETER

DATENDATEI – DATAFILE

Die Datendatei ist eine ganz normale Betriebssystemdatei, in die jedoch nie direkt von einem Userprozess geschrieben wird. Eine Datendatei ist immer genau einem Tablespace zugewiesen und stellt somit den physikalischen Speicher für diesen zur Verfügung.

Datendateien werden in der OPEN Phase von der Datenbank geöffnet.

Data Dictionary Views: DBA_DATA_FILES, ALL_DATA_FILES, USER_DATA_FILES,
V$DATAFILE, V$BACKUP, V$RECOVER_FILE

DBWn – DATABASE WRITER PROCESS

Der DATABASE WRITER PROCESS schreibt „dirty“ Blöcke aus dem Buffer Cache in die Datendateien.

Mit dem Initialisierungs-Parameter DB_WRITER_PROCESSES können Sie die Anzahl der DBWn-Prozesse festlegen (max. 9 Prozesse).

EQUIJOIN

Bei dieser Form des Join werden die Tabellen über ein Gleichheitszeichen verknüpft: der Wert einer Spalte in der ersten Tabelle muss genau dem Wert einer Spalte in der zweiten Tabelle entsprechen. Zeilen ohne Entsprechung in der jeweils anderen Tabelle werden nicht ausgewählt.

Ab Version 9i wird diese Art des Join auch als Inner Join bezeichnet, falls bei der Syntax die ANSI-Norm verwendet wird. Wenn die zum Join herangezogenen Spalten in den beteiligten Tabellen den gleichen Namen haben, kann (ab 9i) auch ein Natural Join (->Weglassen der Join-Bedingung) verwendet werden

EXTENT

Ein Extent besteht aus mehreren Datenblöcken und stellt einen zusammenhängenden Speicherbereich dar. Oracle allokiert Speicher für einzelne Segmente immer in Extent-Einheiten. Größe und Anzahl von Extents wird bei den jeweiligen Segmenten über die folgenden Storage-Parameter eingestellt:

    • INITIAL
    • NEXT
    • PCTINCREASE
    • MINEXTENTS
    • MAXEXTENTS

Data Dictionary Views: DBA_EXTENTS, DBA_FREE_SPACE, ALL_…, USER_…

INSTANZ – INSTANCE

Eine Instanz stellt den aktiven Teil eines Datenbank-Systems dar – die Hintergrundprozesse und die System Global Area (SGA). Diese werden in der NOMOUNT Phase gestartet bzw. allokiert.

Dazu gehören die folgenden Prozesse:

    • SMON
    • PMON
    • LGWR
    • DBWn
    • CKPT
    • RECO
    • ARCH

Data Dictionary Views: V$INSTANCE, V$PARAMETER, V$SGA, V$SGASTAT

JOB

Ein Job ist eine Aufgabe, die die Datenbank entweder einmalig oder periodisch wiederkehrend automatisch ausführt. Das kann ein Prozeduraufruf, aber auch einzelner Befehl sein. Erstmalige Durchführung, Intervall und Aufgabe werden beim Einrichten (mit dem Package DBMS_JOB)  angegeben.

Voraussetzung für die Ausführung von Jobs ist, dass mindestens ein Hintergrundprozess eingerichtet wurde, der den Job ausführen kann; dazu muss der init.ora-Parameter JOB_QUEUE_PROCESSES auf einen Wert > 0 gesetzt werden. Bis einschließlich 8i kann mit JOB_QUEUE_INTERVAL noch ein Intervall angegeben werden, wie häufig der Prozess aufwacht, um nach zu erledigenden Jobs zu sehen.

DD-Views: dba_jobs, dba_jobs_running

JOIN

Darunter versteht man die Verknüpfung zweier oder mehrerer Tabellen bei einer Abfrage. Ohne Angabe einer Join-Bedingung erhält man ein Kreuzprodukt. Man unterscheidet zwischen

    • Equijoin
    • Self Join
    • Non-Equijoin
    • Outer Join

KREUZPRODUKT

Ein Kreuzprodukt oder kartesisches Produkt entsteht, wenn bei der Verknüpfung zweier Tabellen keine Join-Bedingung angegeben wird. Als Ergebnismenge wird dann jede Zeile der einen Tabelle mit jeder Zeile der anderen Tabelle kombiniert.

Ab Version 9i wird diese Art der Kombination auch als Cross Join bezeichnet, falls bei der Syntax die ANSI-Norm verwendet wird.

LGWR – LOG WRITER

Der LOG WRITER PROCESS schreibt die Einträge aus dem Redo Log Buffer in die Online Redo Log Dateien. Sind die Online Redo Log Dateien gespiegelt, so werden alle MEMBER einer Redo Log Group beschrieben.

NON-EQUIJOIN

Diese Form des Join wird verwendet, wenn es keine geeigneten Spalten in den Tabellen gibt, die über ein Gleichheitszeichen verknüpft werden können. Stattdessen wird ein Wertebereich angegeben; klassischer Operator beim Non-Equijoin ist BETWEEN. Zeilen ohne Entsprechung in der jeweils anderen Tabelle werden nicht ausgewählt.

OUTER JOIN

Bei dieser Form des Join werden die Tabellen ebenso wie beim Equijoin über ein Gleichheitszeichen verknüpft: der Wert einer Spalte in der ersten Tabelle muss genau dem Wert einer Spalte in der zweiten Tabelle entsprechen. Im Unterschied zum Equijoin werden Zeilen einer Tabelle ohne Entsprechung in der anderen Tabelle jedoch schon ausgewählt; es muss angegeben werden, von welcher Tabelle die Zusatzzeilen angegeben werden sollen.

Ab Version 9i kann bei der Syntax auch die ANSI-Norm verwendet werden. Man spricht dann von Left Outer Join, Right Outer Join oder Full Outer Join. Beim Full Outer Join werden aus beiden beteiligten Tabellen die Zeilen ohne Entsprechung in der anderen Tabelle mit ausgewählt.

PMON – PROCESS MONITOR

Nach dem Absturz eines Benutzer-Prozesses rollt der PROCESS MONITOR die offenen Transaktionen zurück, gibt alle von diesem Benutzer gehaltenen Sperren frei (Zeilen, Tabellen) und gibt die vom Benutzer verwendeten Ressourcen wieder frei.

RDBMS

RDBMS ist die Abkürzung für Relationales Datenbank-Management-System. Die Vorteile einer Relationalen Datenbank sind unter anderem:

    • Viele Benutzer können gleichzeitig mit Datenbestand arbeiten
    • Hohe Datensicherheit durch Backup & Recovery Konzepte
    • Verwaltung von großen Datenbeständen
    • Wahrung der Datenkonsistenz und Datenintegrität
    • Einheitliche Sprache für alle Benutzer, Entwickler, Administratoren (SQL)
    • Alle Daten (auch Verwaltungsdaten der DB) liegen in Tabellen
    • Physikalische und logische Datenunabhängigkeit

REDO LOG BUFFER

Im REDO LOG BUFFER werden alle Änderungen einer Datenbank gespeichert. Er wird zyklisch beschrieben und sein Inhalt regelmäßig durch den LGWR in die Online Redo Log Dateien gesichert. Die Größe wird durch den Parameter LOG_BUFFER festgelegt.

REDOLOGDATEI – REDOLOGFILE

In den Redologdateien werden alle Änderungen protokolliert, die in der Datenbank durchgeführt worden sind. Sie sichern die Datenbank dadurch vor Dateifehlern (Redologgruppen immer mit mehreren Mitgliedern anlegen!). Bei einem COMMIT wird der LGWR Prozess veranlasst, die Daten aus dem Redologpuffer in die aktuelle Redologdatei zu schreiben. Erst wenn diese Daten wirklich in der Redologdatei gespeichert sind, erhält der Benutzerprozess die COMMIT-Bestätigung.

Bei einem Recovery der Datenbank werden alle in den Redologdateien protokollierten Änderungen auf die Datendateien angewendet, um diese wieder konsistent zu machen (Rollforward). Im Anschluss werden dann alle noch nicht mit COMMIT abgeschlossenen Transaktionen wieder zurückgerollt (Rollback).

Data Dictionary Views: V$LOG, V$LOGFILE

SCHEMA

Dieser Begriff fasst alle Datenbank-Objekte zusammen, die dem gleichen Datenbank-User gehören. Der Schemaname ist dabei gleich dem Usernamen des Besitzers.

SELF JOIN

Der Self Join ist eine Sonderform des Equijoin: eine Tabelle wird mit sich selbst verknüpft; sie erscheint zweimal unter verschiedenem Alias in der FROM-Klausel.

Ab Version 9i wird auch diese Art des Join auch als Inner Join bezeichnet, falls bei der Syntax die ANSI-Norm verwendet wird.

SHARED POOL

Der SHARED POOL wird zum Parsen und Kompilieren von SQL-Statements verwendet. Er ist in zwei Bereiche, den LIBRARY CACHE und den DATA DICTIONARY CACHE, aufgeteilt. Im LIBRARY CACHE wird der SQL-Text, der geparste Code und der Ausführungsplan gespeichert. Im DATA DICTIONARY CACHE werden Privilegien und Objektdefinitionen (Tabellen-, Spaltendefinitionen, …) gespeichert. Die Größe des SHARED POOL wird durch den Parameter SHARED_POOL_SIZE festgelegt.

Data Dictionary Views: V$LIBRARYCACHE, V$ROWCACHE, V$SQLAREA, V$SQLTEXT, V$DB_OBJECT_CACHE

SMON – SYSTEM MONITOR

Der SYSTEM MONITOR führt freie Extents in einem Dicitonary Managed Tablespace wieder zusammen, gibt temporäre Segmente, die nicht mehr beansprucht werden, wieder frei und führt nach dem Absturz einer Instanz automatisch ein Instanz-Recovery durch.

STEUERDATEI – CONTROLFILE

Die Steuerdatei beinhaltet statische Informationen über den Aufbau der Datenbank. Dies sind u.a.

    • Name und ID der Datenbank
    • die Namen aller Redologdateien sowie deren Nummern und Gruppen-ID’s
    • die Namen aller Datendateien
    • der Status (ONLINE/OFFLINE) der einzelnen Dateien
    • die Redolog Sequenz Nummer (im ARCHIVELOG Modus)
    • die Nummer der aktiven Redologdatei
    • Informationen über die ausgeführten Checkpoints
    • ARCHIVELOG Status der Datenbank
    • Backup-Informationen bei Sicherung mittels RMAN

Eine intakte Steuerdatei ist zwingende Vorraussetzung für den Betrieb einer Datenbank und sollte deshalb auch immer mehrfach vorhanden sein. Diese Spiegelung kann bei der Erzeugung einer Datenbank sehr einfach über den CONTROL_FILES Parameter in der INIT.ORA Datei erreicht werden.

Beispiel:

control_files = (/u1/ORCL/ctl2ORCL.ctl, /u2/ORCL/ctl2ORCL.ctl)

Um im Fehlerfall eine Datenbank wieder rekonstruieren zu können, sollten Sie nach Strukturänderungen (z.B. neuer Tablespace oder neue Datei) immer eine Kopie der aktuellen Steuerdatei erstellen. Sie können während des laufenden Betriebes eine binäre oder eine les- und editierbare Kopie davon erzeugen.

Beispiel für eine binäre Kopie:

ALTER DATABASE BACKUP CONTROLFILE TO <Dateiname>;

Beispiel für eine lesbare Kopie – diese wird im Verzeichnis BACKGROUND_DUMP_DEST angelegt:

ALTER DATABASE BACKUP CONTROLFILE TO TRACE;

Data Dictionary Views: V$CONTROLFILE, V$DBFILE, V$LOGFILE

SEGMENT

Segmente sind Oracle Objekte, in denen Daten gespeichert werden können:

    • Tabelle
    • Cluster
    • Index
    • Rollback Segmente
    • Temporäre Segmente
    • LOB Segmente
    • Bootstrap Segment (Oracle intern)

Segmente bestehen aus einzelnen Extents. Beim Anlegen eines Objektes allokiert Oracle MINEXTENTS Extents für das Objekt. Sollte es im weiteren Verlauf notwendig sein, so allokiert Oracle weitere Extents von der Größe NEXT (bis MAXEXTENTS erreicht ist).

Data Dictionary Views: DBA_SEGMENTS, DBS_ROLLBACK_SEGS, ALL_…, USER_…

Sequenz

Eine Sequenz ist ein eigenständiges Schemaobjekt, das als Nummerngenerator dient. Beim Anlegen einer Sequenz kann u.a. angegeben werden:

    • Startpunkt (Default: 1)
    • Schrittweite (Default: 1)
    • Maximalwert (Default: 1,0000E+27)

Sequenzen werden i.d.R. dazu verwendet, ein Primärschlüsselfeld zu füllen. Solange eine Sequenz als NOCYCLE (Default) definiert wurde, kann die gleiche Nummer niemals mehrfach vergeben werden. Dies führt zur absoluten Eindeutigkeit; allerdings kann es bei Verwendung einer Sequenz zu Lücken bei Werten der betreffenden Spalte kommen.

Data Dictionary Views: USER_SEQUENCES, ALL_SEQUENCES, DBA_SEQUENCES

SYSTEM GLOBAL AREA

Die System Global Area (SGA) wird beim Start einer Instanz im Hauptspeicher des Rechners allokiert. Sie besteht aus mehreren unterschiedlichen Bereichen, deren Größe von den INIT.ORA Einstellungen abhängt (Seit Oracle 9i können einige dieser Werte dynamisch eingestellt werden, ohne dazu die Datenbank neu starten zu müssen).

Die SGA besteht aus den folgenden Bereichen:

    • Buffer Cache
    • Shared Pool (Library Cache, Dictionary Cache)
    • Redolog Cache

Data Dictionary Views: V$PARAMETER, V$SGA, V$SGASTAT

TABLESPACE

Tablespaces sind logische Speicherbereiche innerhalb einer Oracle Datenbank, in denen Daten (Segmente, Prozeduren …) gespeichert werden können. Daten, Index, Rollback und Temporäre Segmente werden i.d.R immer in unterschiedlichen Tablespaces gespeichert. Ein Tablespace besteht aus mindestens einer Datendatei.

Der SYSTEM Tablespace wird mit dem Erzeugen der Datenbank automatisch angelegt und muss immer verfügbar (ONLINE) sein.

Data Dictionary Views: DBA_TABLESPACES, ALL_TABLESPACES,
USER_TABLESPACES, V$TS

TRIGGER

Ein Trigger ist eine PL/SQL-Routine, die nicht namentlich aufgerufen wird, sondern rein ereignisgesteuert. Sobald das Ereignis eintritt, für das ein Trigger definiert wurde, wird automatisch der Triggercode ausgeführt.

Neben den klassischen Datenbank – Triggern, bei denen es unerheblich ist, über welche Applikation ein Ereignis ausgelöst wurde, gibt es in einigen Applikationen (Forms, Reports) auch noch Trigger, die von Applikations – Ereignissen abhängen.

DD-Views: dba_triggers