Prozessarchitektur einer Oracle-Instanz

Werbung
Prozessarchitektur einer
Oracle-Instanz
Katharina Schewzow, 05IND
3. Juni 2008
1
Inhaltsverzeichnis
Inhaltsverzeichnis
1 Oracle Instanz
3
2 Die Oracle-Prozesse
5
2.1 Die Server-Prozesse . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5
2.2 Hintergrundprozesse . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6
2.2.1 Der Database Writer (DBWR) . . . . . . . . . . . . . . . . . . .
6
2.2.2 Der Log Writer (LGWR) . . . . . . . . . . . . . . . . . . . . . .
6
2.2.3 Der Checkpoint-Prozess (CKPT) . . . . . . . . . . . . . . . . .
6
2.2.4 Der Archiver Prozess (ARCH) . . . . . . . . . . . . . . . . . . .
7
2.2.5 Der Recoverer Prozess (RECO) . . . . . . . . . . . . . . . . . .
7
2.2.6 Der Systemmonitor Prozess (SMON) . . . . . . . . . . . . . . .
7
2.2.7 Der Prozessmonitor Prozess (PMON) . . . . . . . . . . . . . . .
7
3 System Global Area (SGA)
8
3.1 Database Buffer Cache . . . . . . . . . . . . . . . . . . . . . . . . . . .
10
3.2 Redo Log Buffer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
11
3.3 Shared Pool
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
11
3.3.1 Library Cache . . . . . . . . . . . . . . . . . . . . . . . . . . . .
11
3.3.2 Data Dictionary Cache . . . . . . . . . . . . . . . . . . . . . . .
11
3.4 Java Pool . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
12
3.5 Large Pool . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
12
2
1
1
Oracle Instanz
Oracle Instanz
Eine Oracle-Instanz ist Hauptbestandteil des Oracle Datenbank Management System (DBMS). Zu jeder Datenbank gehört mindestens eine Instanz.
Sie besteht aus zwei Hauptkomponenten
• der System Global Area (SGA) und
• Hintergrundprozessen.
Über einen Server-Prozess greifen die Client-Prozesse auf die Datenbank zu. Dieser Server-Prozess ist für das Ausführen von SQL-Queres, die Datenbereitstellung
vom Externspeicher und die Rückgabe der Anfrage-Resultate an den Client zuständig. Die Hintergrundprozesse stellen die Verbindung zwischen der SGA und
den Dateien der Datenbank und sind für die Transaktionsverwaltung und das Recovery zuständig.
Die SGA ist eine globale Hauptspeicherstruktur. Sie besteht haupsächlich aus dem
Datenbankpuffer, dem Redo-Log-Puffer und einem Cache für den Datenbankkatalog (data dictionary).
Die einzelne Strukturen der System Global Area (SGA) und die auf einer OracleInstanz laufende Hintergrundprozesse werden später näher erläutert.
3
1
Oracle Instanz
Abbildung 1: Prozessarchitektur von Oracle10g (Thomas Kudraß: Taschenbuch
Datenbanken, 2007)
4
2
2
Die Oracle-Prozesse
Die Oracle-Prozesse
Die Oracle-Prozesse unterteilt man in
• Server-Prozesse und
• Hintergrundprozesse
- Der Database Writer (DBWR)
- Der Log Writer (LGWR)
- Der Checkpoint-Prozess (CKPT)
- Der Archiver Prozess (ARCH)
- Der Recoverer Prozess (RECO)
- Der Systemmonitor Prozess (SMON)
- Der Prozessmonitor Prozess (PMON)
2.1
Die Server-Prozesse
Für jeden Benutzer-Prozess erzeugt Oracle einen dazugehörigen Server-Prozess,
über den die Kommunikation mit der Oracle-Instanz möglich wird. Die wichtigsten
Aufgaben des Server-Prozesses sind:
- das Parsen und Ausführen von SQL-Anfragen,
- die Bereitstellung von Daten aus dem Externspeicher und
- die Rückgabe der Anfrage-Resultate an den Client.
5
2
2.2
Die Oracle-Prozesse
Hintergrundprozesse
Jeder Hintergrundprozess ist für die Erfüllung einer bestimmter Funktion zuständig. Das Datenbanksystem funktioniert nur dann richtig, wenn alle Hintergrundprozesse fehlerfrei laufen.
2.2.1
Der Database Writer (DBWR)
Der Database Writer ist für das Schreiben von Datenblöcken aus dem Buffer Cache
in die Dateien der Tablespaces verantwortlich. Mit dem Initialisierungs-Parameter
DB_WRITER_PROCESSES können Sie die Anzahl der DBWR-Prozesse festlegen
(max. 20 Prozesse).
Es gibt eine Reihe von Ereignissen, die den Database Writer zwingen, Buffer auf
die Festplatte zu schreiben. Das passiert
- wenn ein Server-Prozess keinen freien Buffer findet und der Schwellenwert
für die Suche erreicht wird
- wenn ein checkpoint ausgeführt wird
- nach einem timeout von drei Sekunden
2.2.2
Der Log Writer (LGWR)
Der Log Writer ist für die Verwaltung der Redo Log Buffer verantwortlich, die er
in die Redo-Log-Dateien auf der Festplatte schreibt.
Dies geschiet wenn:
- eine Transaktion erfolgreich beendet wird
- der Redo Log Buffer zu einem Drittel gefüllt ist
- der DBWR Daten schreibt
2.2.3
Der Checkpoint-Prozess (CKPT)
Durch den Checkpoint-Prozess werden periodisch Sicherheitspunkte angelegt, die
nach einem Absturz zum Reconstruieren der Daten dienen. CKPT aktualliseiert
auch die Header der Datendateien, so dass sie die Daten des CHPT festhalten.
6
2
2.2.4
Die Oracle-Prozesse
Der Archiver Prozess (ARCH)
Der Archiver Prozess ist ein optionaler Prozess, da er nur dann existiert, wenn die
Datenbank im ARCHIVELOG-Modus betrieben wird. Die Archivierungsprozesse
sichern voll geschriebene Redolog-Dateien in ein dafür konfiguriertes Verzeichnis.
2.2.5
Der Recoverer Prozess (RECO)
Die Aufgabe des Recoverer Prozesses ist es die Fehler, die bei den verteilten Transaktionen auftretten, zu beheben. Die Verbindung zu einer anderen in die verteilte
Transaktion eingebundene Insanz wird automatisch aufgebaut. Beim Fehlschlag
der Verbindung wird diese nach einer gewissen Zeit wiederaufgebaut.
2.2.6
Der Systemmonitor Prozess (SMON)
Der Systemmonitor Prozess dient hauptsächlich zur Wiederherstellung einer OracleInstanz nach dem Absturz. Außerdem werden durch SMON nicht mehr verwendete, temporäre Segmente gelöscht. SMON kontrolliert regelmäßig, ob er gebraucht
wird. SMON wird auch durch andere Prozesse im Falle einer auszuführenden Aufgabe aufgerufen.
2.2.7
Der Prozessmonitor Prozess (PMON)
Der Prozessmonitor Prozess überwachtdie Aktivität aller auf die Oracle-Instanz
zugreifende Prozesse und und startet die, falls ein Fehler auftritt, neu. Dazu schaltet er alle Ressoursen frei, die der fehlgeschlagene Prozess benötigt hat. Gleichzeitig werden alle durch diesen Prozess angelegte Sperren freigegeben und alle nicht
beendete Transaktionen zurückgesetzt. Wie SMON kontrolliert PMON regelmäßich, ob irgend-welche Aufgaben noch zu erledigen sind.
7
3
3
System Global Area (SGA)
System Global Area (SGA)
Der größte Teil einer Oracle-Instanz ist System Global Area.
Die System Global Area setzt sich aus folgenden Strukturen zusammen:
• Database Buffer Cache (Datenbankpufferspeicher)
• Redo Log Buffer (Wiederherstellungsprotokollpuffer)
• Shared Pool (der geteilte Speicherraum)
* Library Cache
* Data Dictionary Cache (Speicher für den Datenbankkatalog)
• Java Pool (Javaspeicherraum)
• Large Pool (der große Speicherraum)
8
3
System Global Area (SGA)
Die SGA wird initialisiert und in mehrere Bereiche unterteilt, wenn die Instanz
gestartet wird. Die Unterteilung und die Größe des Speicherbereiches lässt sich
während die Instanz aktiv ist nicht mehr ändern. Wenn eine Änderung durchgeführt werden muss, muss man die notwendige Parameter in der Initialisierungsdatei modifizieren und die Instanz neu starten.
Seit Oraacle9i gibt es die Dynamische SGA, bei der Buffer Cache, Shared Pool und
Large Pool geändert werden können, ohne die Instanz neu zu starten.
9
3
3.1
System Global Area (SGA)
Database Buffer Cache
Im Database Buffer Cache werden die zuletzt genutzten Datenblöcke gespeichert.
Falls ein für eine Anfrage benötigter Datenblock nicht im Buffer gefunden wird,
wird er aus den data files gelesen und eine Kopie im Database Buffer Cache abgelegt.
Der Database Buffer Cache kann von allen Prozessen einer Instanz benutzt werden. Man unterscheidet drei Buffer-Arten:
• Dirty Buffer(Puffer, die geänderte Daten enthalten)
• Free Buffer(Keine Daten enthaltende oder zur Überschreibung stehende
Blöcke, die mit Daten von der Festplatte gefühllt werden)
• Pinned Buffer(Puffer, die gerade benutzt werden)
Zur Verwaltung von Buffer Cache werden zwei Listen verwendet:
- Write List (Dirty Buffer List) und
- LRU-Liste (Least Recently Used List).
In der Write List werden alle geänderte Buffer regestriert, die noch auf die Festplatte geschrieben werden müssen.
Die LRU-Liste besteht aus Dirty Buffer,Free Buffer und Pinned Buffer, die noch
nicht in der Write List stehen. Von der Festplatte gelesene Daten werden am Anfang der LRU-Liste plaziert. Falls der Buffer Cache voll wird, entfernt man die am
Ende der LRU-Liste stehende Datenblöcke. Mit diesem Prinzip befinden sich die
oft verwendete Blöcke immer im Buffer Cache.
10
3
3.2
System Global Area (SGA)
Redo Log Buffer
Der Redo Log Buffer hält alle Änderungen, die mittels CREATE-, UPDATE-,
INSERT-, DELETE-, DROP- und ALTER-Anweisungen gemacht wurden, für die
Redo-Log-Dateien. Beim Pufferüberlauf werden die Redo-Einträge mittels des LGWR in die log files geschrieben und der Puffer wieder freigegeben.
Die Größe des Redo Log Buffers lässt sich über die Konstante LOG_BUFFER bestimmen.
3.3
Shared Pool
Der Shared Pool wird in zwei Bereiche unterteilt:
• der Library Cache und
• der Data Dictionary Cache.
Der Speicher wird nach dem LRU-Verfahren verwaltet (die ältesten Einträge werden zuerst aus dem Speicher entfernt).
Die Größe des Shared Pools lässt sich über die Konstante SHARED_POOL_SIZE
bestimmen.
3.3.1
Library Cache
Der Library Cache enthält SQL-Anweisungen, PL/SQL-Prozeduren und PL/SQLPakete.
3.3.2
Data Dictionary Cache
Der Data Dictionary Cache speichert Objekte aus dem Data Dictionary (Datenbankkatalog).
Der Datenbankkatalog ist eine Sammlung von Tabellen, in denen die Struktur der
Datenbamk gespeichert wird.
11
3
3.4
System Global Area (SGA)
Java Pool
Der Java Pool ist für die Zwischenspeicherung von Java Code zuständig.
3.5
Large Pool
Im Large Pool werden Speicherstrukturen verwaltet, die man nicht direkt zu SQL
zuordnen kann.
12
Literatur
Literatur
[1] Thomas Kudrass “Taschenbuch Datenbanken“, [HANSER, 2007]
[2] Johannes Ahrends, Dierk Lenz, Patrick Schwanke, Günter Unbescheid
“Oracle10g für den DBA“, [Addison-Wesley, 2006]
[3] Fröhlich, Debes, Czarski “Oracle9i“, [Markt+Technik, 2005]
13
Herunterladen