Grundlagen des System Global Area in Oracle 12c

Das System Global Area

(SGA) ist eine Gruppe von gemeinsam genutzten Speicherstrukturen innerhalb Oracle 12c. Es enthält Dinge wie Daten und SQL. Es wird Prozesse zwischen Oracle-Hintergrundprozesse und Server freigegeben.

Die SGA besteht aus mehreren Teilen genannt hat die SGA-Komponenten:

  • Gemeinschafts-Pool

  • Datenbank-Buffer-Cache

  • Redo-Log-Puffer

  • Großer Pool

  • Java-Pool

  • Bäche Pool

Die Speicherbereiche sind mit Initialisierungsparameter verändert.

  • Sie können jeden Parameter individuell für optimale Abstimmung (nur für die Experten) zu ändern.

  • Sie können Oracle sagen, wie viel Speicher Sie die SGA (für alle anderen) verwendet werden soll.

Sagen Sie bitte Oracle wollen 1 GB Speicher zu verwenden. Die Datenbank übernimmt eigentlich, dass 1 GB, wird analysiert, wie alles läuft und stimmt jede Komponente eine optimale Dimensionierung. Es sagt Ihnen, auch wenn es mehr sehnt.

Redo-Log-Puffer in Oracle 12c

Das Redo-Log-Puffer ist ein weiterer Speicherkomponente, die Sie von sich selbst, Pech und Mutter Natur schützt. Dieser Puffer zeichnet jede SQL-Anweisung, die Daten ändert. Die Aussage selbst und alle Informationen, die es zu rekonstruieren, wird als ein Redo-Eintrag. Redo-Einträge Abhängen hier vorübergehend, bevor auf der Festplatte aufgezeichnet werden. Dieser Puffer schützt vor dem Verlust von schmutzigen Blöcke.

Schmutzige Blöcke nicht ständig auf die Platte geschrieben.

Stellen Sie sich vor, dass Sie einen Puffer-Cache von 1.000 Blöcke haben, und 100 von ihnen sind verschmutzt. Dann stellen eine Stromversorgung Bauch nach oben in Ihrem Server geht, und das ganze System kommt ohne irgendwelche schmutzigen Puffer Einsturz geschrieben. Diese Daten werden alle verloren, nicht wahr? Nicht so schnell. . . .

Der Redo-Log-Puffer gespült, wenn diese Dinge geschehen:

  • Jedes Mal gibt es eine auf Daten in der Datenbank-Commit

  • Alle drei Sekunden

  • Wenn die Redo-Puffer 1/3 voll

  • Kurz vor jeder schmutzigen Block wird auf die Platte geschrieben

Warum stört Oracle diese ganze Redo-Puffer Dingens zu halten, wenn statt, es könnte nur die schmutzigen Puffer für jeden begehen auf den Datenträger schreiben? Es scheint überflüssig.

  • Die Datei, die diese Informationen aufzeichnet ist sequentiell. Oracle schreibt immer bis zum Ende der Datei. Es muss nicht auf, wo die Daten zu setzen. Es erfasst nur den Redo-Eintrag. Ein Block existiert irgendwo in einer Datei. Oracle hat um herauszufinden, wo, gehen Sie zu dieser Stelle, und notieren. Redo-Puffer schreibt sind sehr schnell in Bezug auf die I / O.

  • Eine kleine SQL-Anweisung könnten Tausende oder mehrere Datenbank-Blöcke ändern. Es ist viel schneller auf diese Aussage aufzunehmen, als für die ich warten / O Tausende von Blöcken. Die Redo-Eintrag nimmt einen Bruchteil einer Sekunde zu schreiben, die das Fenster der Gelegenheit für Fehler reduziert.

  • Es gibt auch begehen Ihr nur, wenn der Schreibvorgang erfolgreich ist. Sie wissen sofort, dass Ihre Änderungen sicher sind. Im Falle eines Ausfalls kann die Redo-Eintrag haben, während der Wiederherstellung erneut ausgeführt werden, aber zumindest ist es nicht verloren.

Großer Pool in Oracle 12c

Wir meinen damit nicht auf die Größe von Schwimmbecken deines Nächsten. Nicht jeder nutzt die optional großer Pool Komponente. Der große Pool entlastet den gemeinsamen Pool von manchmal transienten Speicheranforderungen.

Diese Funktionen nutzen den großen Pool:

  • Oracle Recovery Manager

  • Oracle Shared Server

  • Parallelverarbeitung

  • I / O-verwandten Serverprozesse

Da viele dieser Aktivitäten nicht konstant sind und weisen Speicher nur dann, wenn sie laufen, ist es effizienter, damit sie in ihren eigenen Raum auszuführen.

Ohne einen großen Pool konfiguriert, stehlen diese Prozesse Speicher aus dem SQL-Bereich des gemeinsamen Pool. Das kann in einem schlechten SQL-Verarbeitung und ständige Änderung der Größe der SQL-Bereich des gemeinsamen Pool führen. Hinweis: Der große Pool hat keine LRU. Sobald es füllt sich (wenn Sie es zu klein Größe) kehren die Prozesse zu ihrem alten Verhalten von Speicher aus dem gemeinsamen Pool zu stehlen.

Java-Pool in Oracle 12c

Die Java-Pool ist nicht ein Swimmingpool mit Kaffee gefüllt (Okay, wir Abschneiden der Pool Referenzen). Die Java-Pool ist eine optionale Speicherkomponente.

Ab Oracle 8i, die Datenbank-Schiffe mit eigenem Java virtuelle Maschine (JVM), die Java-Code aus dem SGA ausführen kann. Unserer Erfahrung nach ist diese Konfiguration relativ selten. In der Tat, werden Sie dies auf dem Oracle-spezifische Tools installiert sind, zu sehen.

Doch lassen Sie sich nicht, dass Sie von der Entwicklung Ihrer eigenen Java-basierten Anwendungen von Oracle entmutigen. Die Tatsache ist, obwohl Oracle seine eigene Java-Container, viele andere lohnt konkurrierenden Alternativen sind da draußen hat.

Streams Pool in Oracle 12c

Die Ströme Pool wird nur verwendet, wenn Sie Oracle Streams Funktionalität verwenden. Oracle Streams ist eine optionale Datenreplikationstechnologie, wo Sie (reproduzieren) die gleichen Transaktionen, Datenänderungen oder Ereignisse aus einer Datenbank in eine andere (manchmal remote) Datenbank zu replizieren. Sie würden dies tun, wenn Sie die gleichen Daten wollten in zwei verschiedenen Datenbanken zu existieren.

Die Ströme Poolspeicherwarteschlangennachrichten gepuffert und liefert die Speicherprozesse zu erfassen und anwenden verwendet. Standardmäßig ist der Wert dieses Pool Null und steigt dynamisch, wenn Oracle Streams verwendet wird.

Menü