Oracle Overview German

From Bitbull Wiki
Jump to navigation Jump to search

1 wieso

Gutes Grundlagen Verständniss ist eine Voraussetzung um sich tiefer in eine Materie einzuarbeiten. Dies gilt vorallem auch für komplexe Systeme wie zum Beispiel Oracle. So habe ich mir kurz die Zeit genommen die Basis Komponenten von Oracle zu beschreiben.

2 Oracle Basis Komponenten

In Oracle sind Datenbank und Instanz untrennbar miteinander verbunden.

3 Datenbank

Eine Datenbank beinhaltet die physikalischen Daten Dateien, Control Dateien, RedoLog Dateien welche Oracles Daten und Metadaten beinhalten.

3.1 Data files

3.1.1 Data tables

Beinhalten die Benutzer Daten.

3.1.2 Indexe

Ähnlich wie Buch Verzeichnisse enthalten Taballen Indexe ein Verzeichnis welche Tabellen Inhalte wo zu finden sind. Dies ermöglicht eine schnelleres auffinden von Daten.

3.1.3 Rollback Segmente

Beinhalten schreibende Änderungen von Operationen welche noch nicht abgeschlossen (comitted) sind. Dies gewährleistet konsistente lese Vorgänge.

3.2 RedoLog Dateien

Beinhalten Einträge von allen Veränderungen an Daten Dateien. RedoLogs sollten immer auf mehrere Partitionen gleichzeitg geschrieben werden.

  • Benutzt um Daten Veränderungen festzuhalten.
  • Abgeschlossene Transaktionen werden vom LGWR sofort in die RedoLogs geschrieben.
  • Falls die DB creshed bevor der DBWR die Veränderung vom Memory in die Datendateien schreiben konnte, wird der SMON beim Start automatisch die RedoLogs in die Datendateien schreiben und somit wieder einen konsistenten Zustand herstellen.
  • Aufgrund der zentralen Funktion von RedoLogs sollten diese immer paralell auf mehrere partitionen gleichzeitig geschrieben werden.
  • Solange Oracle auf mindestens eine RedoLog Destination schreiben kann, ist die Datenbank betreibbar.

3.3 Control Dateien

  • Beinhalten alle notwendigen Informationen um eine Instanz zu starten und zu betreiben.
  • Beinhaltet Metadaten welche für den Recovery fall benötigt werden, darin sind die Informationen abgelegt um zu entscheiden ob die DB konsistent ist.
  • Aufgrund der zentralen Funktion von Control Dateien sollten diese immer paralell auf mehrere partitionen gleichzeitig geschrieben werden.

3.4 Oracle Caching

  • Immer wenn ein Benutzer eine Tabelle liest, wird ein Oracle Prozess erzeugt, der die Daten von den Datendateien in die SGA einliest.
  • Wenn ein weiterer Benutzer die gleichen daten erneut anfragt, werden diese direkt aus dem Memory (SGA) gelesen.
  • Wenn ein benutzer die Daten im Cache verändert, schreibt der DBWR diese Daten in die Datendateien sobald die Transaktion abgeschlossen ist.

4 Instanz

Eine Instanz ist eine Kombination von RAM welches in der SGA verwaltet wird und Hintergrund Prozessen welche Oracle startet um diesen Meomory zu benutzen.

4.1 Oracle Prozesse

4.1.1 DBWR - Database Writer Prozess

Schreibt asynchron aus der SGA in die Datendateien (Daten, Index, Undo, ...)

  • Bei jedem Checkpoint
  • Wenn es zu wenig freie Buffer hat
  • Gesteuert durch init.ora

4.1.2 LGWR - Log Writer

Schreibt Redo Blocks in RedoLogs

  • Bei jedem Commit
  • Alle drei Sekunden
  • Wenn der Redo Buffer Pool zu 1/3 gefüllt ist
  • Wenn der Redo Buffer 1MB gefüllt ist
  • wenn DBWR Blöcke schreiben muss, deren Redo Einträge noch nicht geschrieben sind

Schreibt Redo Einträge der verschiedenen Transaktionen zusammen in die RedoLog Dateien (piggy backing)
Generell wird nie in die Datenfiles geschrieben ohne das vorgängig auf die aktuelle RedoLog-Gruppe geschrieben wurde

4.1.3 PMON - Prozess Monitor

Kümmert sich um die Bereinigung von gescheiterten Benutzer und Server Prozessen.

  • Rollback von abgestürzten Transaktionen
  • Rollback von abgebrochenen Transaktionen
  • Freigabe der Locks und anderer Ressourcen
  • Prüft Stati von Dispatcher und SharedServer Prozessen
  • Startet abgestürzte Prozesse neu
  • Registriert Instanz beim Listener
Hinweis

Bei grossen Rollbacks kann der Rollback sehr Ressourcen intensiv sein.

4.1.4 Checkpoint Prozess

Schreibt Timestamps in die Header der Datenfiles und in die Control dateien
werden druchgeführt wenn:

  • Ein redo log voll ist
  • Wenn die anzahl LOG_CHECKPOINT_INTERVAL in eine RedoLog Datei geschrieben wurde
  • Wenn LOG_CHECKPOINT_TIMEOUT sekunden verstrichen sind oder ein manueller Checkpoint ausgeführt wurde

4.1.5 Archiver Prozess

Schreibt online RedoLogs auf eine oder mehrere Destinationen

  • Aktiv nur im ArchiveMode
  • Schreibt nach einem LogSwitch
  • Max 10 Destinationen

4.2 SGA

Dort liegen alle notwendigen Daten für die Instanz-Operationen.

In diesem Speicherbereich befindet sich

  • Buffer Cache: Hier werden Datenblöcke zwischengespeichert, die von der Platte gelesen werden. Dies ermöglicht es, beim mehrmaligen Zugriff auf Datenblöcke diese aus dem Cache zu lesen, anstatt diese jeweils erneut von der Platte zu lesen.
  • Dictionary Cache: Er enthält Informationen über Data Dictionary-Tabellen, dazu gehören Informationen über Benutzerkonten , Datenbankdateien, Segmente, Extents, Tabellen und Rechte.
  • Redo Log Buffer: Er enthält Informationen über abgeschlossene Transaktionen, die noch nicht in die Online Redo Log Dateien geschrieben wurden.
  • Shared Pool: Hier werden u.a. die zuletzt benutzten SQL-Befehle und ihre Ausführungspläne sowie der Dictionay Cache gespeichert.
  • JAVA Pool (optional): Zur Analyse der Java-Befehle.


4.2.1 Shared Memory und die SGA

  • Je grösser die SGA desto performanter kann die DB arbeiten (meisstens). Dies weil der zugriff auf RAM wesentlich performanter ist Disk Operationen.
  • SGA size must be balanced with memory requirements of the OS and other running applications.
  • SGA ist abhängig vom Memory welches dem darunterliegenden OS zur verfügung steht.
    • Eine zu grosse SGA führt zu excessivem Paging.
    • Eine zu kleine SGA führt zu übermässig grossem Disk I/O.

4.2.2 Physical Memory und die SGA

  • Auf Grund des Speicherbedarfs von Oracle Servern, dessen hintergunf Prozessen und ihrer SGA ist ist genügend RAM eine Bedingung für für den Betrieb.
    • SGA muss kleiner sein als das RAM des Betriebssystems.

5 Betriebssystem abhängige Komponenten

5.1 Dateisystem

5.1.1 Raw

Heisst, das die Oracle Daten direkt in eine Partition geschrieben werden ohne diese vorher mit einem Dateisystem zu formatieren.

  • RAW Disks werden oft benutzt um ein Maximum an I/O Performance zu erreichen.
    • Es wird kein Buffer verwendet.
    • Es liegt keine Dateisystem Schicht zwischen Oracle und den Datendateien.
  • Diese Variante ist Historinsch bedingt und wurde rein aus Performance Gründen Benutzt.

5.1.2 Datei basierend

Heisst, das die Oracle Tablespaces in ein formatiertes Dateisystem geschrieben werden.

  • Advances in file system technology have narrowed that gap significantly in I/O performance.
  • Die Features heutiger Dateisysteme haben den Pervormance Vorteil gegenüber RAW Datenhaltung nahezu aufgeholt.
    • Asynchronous I/O
    • Direct I/O
    • Configurable file-system buffers
    • Veritas File-systems Quick I/O
    • extent-based file systems (xfs, jfs2, vxfs, etc.)
  • Dateisysteme bieten zudem eine grössere Flexibilität im Umgang mit Daten.
    • ‘cp’, ‘mv’, ‘cpio’, ‘tar’, ‘dump/restore’, etc.