The Geek Diary
Das folgende Beispiel beschreibt Oracle-Datenbankoperationen auf der grundlegendsten Ebene. Es veranschaulicht eine Oracle-Datenbankkonfiguration, bei der sich der Benutzer und der zugehörige Serverprozess auf separaten Computern befinden, die über ein Netzwerk verbunden sind.
1. Eine Instanz wurde auf einem Knoten gestartet, auf dem Oracle Database installiert ist, häufig als Host oder Datenbankserver bezeichnet.
2. Ein Benutzer startet eine Anwendung, die einen Benutzerprozess erzeugt. Die Anwendung versucht, eine Verbindung zum Server herzustellen. (Die Verbindung kann lokal, Client/Server oder eine dreistufige Verbindung von einer mittleren Ebene sein.)
3. Der Server führt einen Listener aus, der über den entsprechenden Oracle Net Services-Handler verfügt. Der Listener erkennt die Verbindungsanforderung von der Anwendung und erstellt einen dedizierten Serverprozess im Namen des Benutzerprozesses.
4. Der Benutzer führt eine SQL-Anweisung vom Typ DML aus und schreibt die Transaktion fest. Der Benutzer ändert beispielsweise die Adresse eines Kunden in einer Tabelle und schreibt die Änderung fest.
5. Der Serverprozess empfängt die Anweisung und überprüft den gemeinsam genutzten Pool (eine SGA-Komponente) auf jeden gemeinsam genutzten SQL-Bereich, der eine identische SQL-Anweisung enthält. Wenn ein freigegebener SQL-Bereich gefunden wird, überprüft der Serverprozess die Zugriffsrechte des Benutzers auf die angeforderten Daten des Benutzers, und der vorhandene freigegebene SQL-Bereich wird zum Verarbeiten der Anweisung verwendet. Wenn kein freigegebener SQL-Bereich gefunden wird, wird der Anweisung ein neuer freigegebener SQL-Bereich zugewiesen, damit sie analysiert und verarbeitet werden kann.
6. Der Serverprozess ruft alle erforderlichen Datenwerte ab, entweder aus der tatsächlichen Datendatei (Tabelle) oder aus Werten, die im Datenbankpuffercache gespeichert sind.
7. Der Serverprozess ändert Daten im SGA. Da die Transaktion festgeschrieben ist, zeichnet der Log Writer-Prozess (LGWR) die Transaktion sofort in der Redo-Protokolldatei auf. Der Datenbankschreiberprozess (DBWn) schreibt geänderte Blöcke dauerhaft auf die Festplatte, wenn dies effizient ist.
8. Wenn die Transaktion erfolgreich ist, sendet der Serverprozess eine Nachricht über das Netzwerk an die Anwendung. Wenn es nicht erfolgreich ist, wird eine Fehlermeldung gesendet.
9. Während dieses gesamten Vorgangs werden die anderen Hintergrundprozesse ausgeführt, wobei nach Bedingungen gesucht wird, die einen Eingriff erfordern. Darüber hinaus verwaltet der Datenbankserver die Transaktionen anderer Benutzer und verhindert Konflikte zwischen Transaktionen, die dieselben Daten anfordern.