Hier finden Sie kurz zusammengefasste Informationen zu wichtigen Begriffen rund um Oracle. Alle Begriffe sind - wo sinnvoll - in deutsch und englisch benannt.
Index:
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.
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
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 ist ein Überbegriff für die Array-Datenypen in PL/SQL, also:
Unter dem Begriff Datenbank versteht man den passiven Teil eines Datenbank-Systems - alle Datenbankdateien mit all den darin enthaltenen Informationen:
Data Dictionary Views: V$DATABASE, V$DATAFILE
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
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
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).
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.
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:
Data Dictionary Views: DBA_EXTENTS, DBA_FREE_SPACE, ALL_..., USER_...
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:
Data Dictionary Views: V$INSTANCE, V$PARAMETER, V$SGA, V$SGASTAT
Damit ist gemeint, dass PL/SQL-Routinen im Schema und mit den Berechtigungen desjenigen ausgeführt werden, der sie aufruft. Dies kann erzwungen werden durch die Angabe von AUTHID CURRENT_USER in der Signatur der Prozedur / der Funktion /des Packages. Ohne eine solche Angabe – oder bei Angabe von AUTHID DEFINER – wird eine Routine im Schema und mit den Berechtigungen des Eigentümers ausgeführt.
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
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:
Siehe 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.
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.
Damit werden im Zusammenhang mit Triggern Tabellen bezeichnet, die aufgrund eines den Trigger zündenden DML-Befehls geändert werden. Im Normalfall ist dies nur die Tabelle selbst, auf der der Trigger liegt, es kann aber aufgrund einer Foreign Key-Beziehung, die mit ON DELETE CASCADE definiert wurde, zusätzlich eine weitere Tabelle Mutating sein. Wenn der Trigger für jede zu ändernde Zeile zündet ("Row Trigger"), so darf im Trigger nicht lesend auf solche Tabellen zugegriffen werden.
Wird diese Einschränkung nicht beachtet, so kann es bei der Ausführung von DML-Befehlen zu Laufzeitfehlern kommen.
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.
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.
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 ist die Abkürzung für Relationales Datenbank-Management-System. Die Vorteile einer Relationalen Datenbank sind unter anderem:
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.
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
Dieser Begriff fasst alle Datenbank-Objekte zusammen, die dem gleichen Datenbank-User gehören. Der Schemaname ist dabei gleich dem Usernamen des Besitzers.
Segmente sind Oracle Objekte, in denen Daten gespeichert werden können:
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_...
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 als Inner Join bezeichnet, falls bei der Syntax die ANSI-Norm verwendet wird.
Eine Sequenz ist ein eigenständiges Schemaobjekt, das als Nummerngenerator dient. Beim Anlegen einer Sequenz kann u.a. angegeben werden:
Sequenzen werden u.a. dazu verwendet, eine Primärschlüsselspalte zu füllen. Solange eine Sequenz als NOCYCLE (Default) definiert wurde, kann ein und die selbe Nummer nie zweimal 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
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
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.
Die Steuerdatei beinhaltet statische Informationen über den Aufbau der Datenbank. Dies sind u.a.
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
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 (Hinweis: 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:
Data Dictionary Views: V$PARAMETER, V$SGA, V$SGASTAT
Tablespaces sind logische Speicherbereiche einer Oracle Datenbank, in denen Daten (Segmente, Prozeduren, ...) gespeichert werden können. Im Idealfall werden Daten, Index, Rollback und Temporäre Segmente 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
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
Niederlassungen
Witneystraße
089 6228 6789-0
Grünwalder Weg
089 679090-40
E-Mail:
Bitte nehmen Sie mich in den Verteiler der monatlichen Tipps & Tricks auf.