ORACLE-Prozess
Der Prozess während der Interaktion zwischen ORACLE-Client und -Server ist in Benutzerprozess und ORACLE-Prozess unterteilt. Wenn ein Benutzer eine ORACLE-Clientanwendung ausführt, z. B. ein PRO*C-Programm oder ein ORACLE-Tool (z. B. SQL*PLUS), wird ein Benutzerprozess für die Anwendung erstellt, die der Benutzer ausführt. ORACLE-Prozesse werden in zwei Kategorien unterteilt: Serverprozesse und Hintergrundprozesse. Der Serverprozess wird verwendet, um Anfragen von Benutzerprozessen zu verarbeiten, die mit der Instanz verbunden sind.
Wenn die Anwendung und ORACLE auf demselben Computer statt über das Netzwerk ausgeführt werden, werden der Benutzerprozess und der entsprechende Serverprozess im Allgemeinen in einem einzigen Prozess zusammengefasst, um den Systemaufwand zu reduzieren. Wenn die Anwendung und ORACLE jedoch auf unterschiedlichen Rechnern laufen, kommuniziert der Benutzerprozess mit ORACLE über einen separaten Serverprozess. Es kann die folgenden Aufgaben ausführen:
(1) Syntaxanalyse und Ausführung von SQL-Anweisungen, die von der Anwendung ausgegeben werden
(2) Lesen der erforderlichen Datenblöcke aus der Festplattendatendatei in den gemeinsam genutzten Datenbankpuffer von SGA (When der Block ist nicht im Puffer)
(3) Geben Sie das Ergebnis zur Verarbeitung an die Anwendung zurück.
Um die beste Leistung zu erzielen und mehrere Benutzer zu koordinieren, verwendet das System einige zusätzliche Prozesse in einem Multiprozesssystem, sogenannte Hintergrundprozesse. In vielen Betriebssystemen werden Hintergrundprozesse beim Start der Instanz automatisch erstellt.
Eine ORACLE-Instanz verfügt über mehrere Hintergrundprozesse, nämlich: DBWR (Datenbankschreibprozess), LGWR (Protokollschreibprozess), CKPT (Checkpoint-Prozess), SMON (Systemüberwachungsprozess), PMON (Prozessüberwachungsprozess), ARCH (Archivierung). Prozess), RECO (Wiederherstellungsprozess). Jeder Hintergrundprozess interagiert mit einem anderen Teil der ORACLE-Datenbank. Die ersten fünf Prozesse sind erforderlich und die letzten beiden Prozesse sind optional.
Im Folgenden finden Sie eine kurze Einführung in die Funktionen des Hintergrundprozesses.
1. DBWR-Prozess
Die Funktion dieses Prozesses besteht darin, den Puffer in die Datendatei zu schreiben. Es handelt sich um einen ORACLE-Hintergrundprozess, der für die Pufferspeicherverwaltung verantwortlich ist. Wenn ein Puffer im Puffer geändert wird, wird er als „schmutzig“ markiert. Die Hauptaufgabe von DBWR besteht darin, den „schmutzigen“ Puffer auf die Festplatte zu schreiben, um den Puffer „sauber“ zu halten.
Die Anzahl ungenutzter Puffer nimmt ab, wenn Puffer im Pufferspeicher die Datenbank füllen oder durch Benutzerprozesse verschmutzt werden. Wenn der ungenutzte Pufferbereich auf einen so geringen Wert sinkt, dass der Benutzerprozess den ungenutzten Pufferbereich nicht finden kann, wenn er Blöcke von der Festplatte in den Speicherbereich lesen möchte, verwaltet DBWR den Pufferspeicherbereich, und der Benutzerprozess kann dies jederzeit tun Erhalten Sie es mit
Unbenutzter Puffer.
ORACLE verwendet den LRU-Algorithmus (LEAST RECENTLY USED) (zuletzt verwendeter Algorithmus), um die zuletzt verwendeten Datenblöcke im Speicher zu behalten und so die E/A zu minimieren. Unter den folgenden Umständen schreibt DBWR fehlerhafte Puffer auf die Festplatte.
(1) Wenn ein Serverprozess einen Puffer in eine „schmutzige“ Tabelle verschiebt und die schmutzige Tabelle eine kritische Länge erreicht, benachrichtigt der Dienstprozess DBWR zum Schreiben. Die kritische Länge beträgt die Hälfte des Wertes des Parameters DB-BLOCK-WRITE-BATCH.
(2) Wenn ein Serverprozess in der LRU-Tabelle nach dem DB-BLOCK-MAX-SCAN-CNT-Puffer sucht und kein ungenutzter Puffer gefunden wird, stoppt er die Suche und benachrichtigt DBWR zum Schreiben.
(3) Wenn eine Zeitüberschreitung auftritt (jeweils 3 Sekunden), benachrichtigt sich DBWR selbst.
(4) Wenn ein Kontrollpunkt auftritt, benachrichtigt LGWR DBWR.
In den ersten beiden Fällen schreibt DBWR die Blöcke in der Dirty-Tabelle auf die Festplatte. Die Anzahl der Blöcke, die gleichzeitig geschrieben werden können, wird durch den Initialisierungsparameter DB-BLOCK-WRITE-BATCH angegeben. Wenn in der Dirty-Tabelle kein Puffer mit der angegebenen Anzahl von Blöcken vorhanden ist, sucht DBWR in der LUR-Tabelle nach einem anderen Dirty-Puffer.
Eine Zeitüberschreitung tritt auf, wenn DBWR drei Sekunden lang inaktiv ist. In diesem Fall durchsucht DBWR die LRU-Tabelle nach der angegebenen Anzahl von Puffern und schreibt alle gefundenen fehlerhaften Puffer auf die Festplatte. Wenn die Datenbank inaktiv ist, schreibt DBWR schließlich den gesamten Pufferspeicher auf die Festplatte.
Wenn ein Prüfpunkt auftritt, gibt LGWR an, dass eine geänderte Puffertabelle auf die Festplatte geschrieben werden muss. DBWR schreibt den angegebenen Puffer auf die Festplatte.
Auf einigen Plattformen kann eine Instanz mehrere DBWRs haben. In einem solchen Fall werden möglicherweise einige Blöcke auf eine Festplatte und andere Blöcke auf andere Festplatten geschrieben. Der Parameter DB-WRITERS steuert die Anzahl der DBWR-Prozesse.
2. LGWR-Prozess
Dieser Prozess schreibt den Protokollpuffer in eine Protokolldatei auf der Festplatte. Es handelt sich um einen ORACLE-Hintergrundprozess, der für die Verwaltung des Protokollpuffers verantwortlich ist. Der LGWR-Prozess druckt alle Protokolleinträge seit dem letzten Schreiben auf die Festplatte. Der LGWR-Prozess schreibt den Inhalt des Protokollpuffers unter den folgenden Bedingungen auf die Festplatte.
(1) Wenn der Benutzerprozess eine Transaktion festschreibt, wird ein Festschreibungsdatensatz geschrieben.
(2) Geben Sie den Protokollpuffer alle drei Sekunden aus.
(3) Geben Sie den Protokollpuffer aus, wenn 1/3 des Protokollpuffers voll ist.
(4) Wenn DBWR den Änderungspuffer auf die Festplatte schreibt, wird der Protokollpuffer ausgegeben.
Der LGWR-Prozess schreibt synchron in die Online-Protokolldateigruppe des aktiven Spiegels. Wenn eine Datei in einer Gruppe gelöscht wird oder nicht mehr verfügbar ist, kann LGWR weiterhin in andere Dateien in der Gruppe schreiben.
Der Protokollpuffer ist ein Ringpuffer. Nachdem LGWR die Protokolleinträge im Protokollpuffer in die Protokolldatei geschrieben hat, kann der Serverprozess neue Protokolleinträge in den Protokollpuffer schreiben. LGWR schreibt normalerweise sehr schnell und stellt so sicher, dass im Protokollpuffer immer Platz für das Schreiben neuer Protokolleinträge ist. Wenn eine Transaktion festgeschrieben wird, wird
eine Systemmodifikationsnummer (SCN) zugewiesen, die zusammen mit dem Transaktionsprotokolleintrag im Protokoll aufgezeichnet wird.
3. CKPT-Prozess
Wenn der Prozess zur Ausführung aktiviert wird, werden die Header aller Datendateien geändert, der Prüfpunkt angegeben und DBWR benachrichtigt, fehlerhafte Datenblöcke in die Datendateien zu schreiben.
4. SMON-Prozess
Die Funktion dieses Prozesses besteht darin, beim Start der ORACLE-Instanz eine Instanzwiederherstellung durchzuführen, und ist auch für die Bereinigung temporärer Segmente verantwortlich, die nicht mehr verwendet werden.
5. PMON-Prozess
Dieser Prozess führt eine Prozesswiederherstellung durch, wenn der Benutzerprozess fehlschlägt, und ist für die Bereinigung des privaten Speicherbereichs und die Freigabe der vom Prozess verwendeten Ressourcen verantwortlich. Es setzt beispielsweise den Status der aktiven Transaktionstabelle zurück, hebt die Blockade auf und entfernt die fehlgeschlagene Prozess-ID aus der aktiven Prozesstabelle.
6. RECO-Prozess
Dieser Prozess wird verwendet, wenn die verteilte Option vorhanden ist, um Fehler in verteilten Transaktionen automatisch zu beheben.
7. ARCH-Prozess
Dieser Prozess kopiert die gefüllten Online-Protokolldateien auf das angegebene Speichergerät. Der ARCH-Prozess existiert nur, wenn das Protokoll für ARCHIVELOG verwendet wird und kann automatisch archiviert werden.
Das Obige ist der Inhalt des ORACLE-Prozesses. Weitere verwandte Artikel finden Sie auf der chinesischen PHP-Website (www.php.cn).