Oracle Commit-Größe größer als verfügbarer RAM, aber v$memory_target_advice sagt OK

Oracle Commit-Größe größer als verfügbarer RAM, aber v$memory_target_advice sagt OK

Oracle 18c wird auf einer Windows 2012R-VM (VMWare) ausgeführt. (Ich habe keinen Zugriff auf die VM-Admin-Tools.)

Die VM verfügt über 5 vCPU und 12 GB RAM (das war angeblich die Empfehlung des VM-Teams, um CPU-Konflikte zu reduzieren …). Mir fällt jedoch auf, dass der zugesicherte Speicher (der von Oracle verwendet wird) erheblich höher ist als der für die Maschine verfügbare RAM.


Ausschnitt aus der Registerkarte „Leistung“ des Task-Managers, der 18,9 GB von 36 GB zugesichert zeigt


Ausschnitt aus der Registerkarte „Details“ des Task-Managers, der die Aufschlüsselung nach Oracle-Prozess zeigt




v$memory_target_advicedeutet nicht auf Verbesserungen durch die Erhöhung des Speicherziels hin ...


Bildbeschreibung hier eingeben


Fragen

  1. Bedeutet dies, dass sich ein großer Teil von Oracle in der Auslagerungsdatei befindet?
  2. Da immer noch 3 GB verfügbar sind, bedeutet dies, dass Oracle bei Bedarf zusätzlichen RAM zur Verfügung hätte (oder wenn Windows entscheiden würde, dass Oracle darauf zugreifen darf)? (Bedeutet das, dass nichts geändert werden muss?)

Antwort1

Oracle hatte früher einen Fehler in seinem Optimierer, der dazu führte, dass der zum Sortieren der Daten erforderliche Speicher falsch berechnet wurde. Diese fehlerhafte Berechnung führte dazu, dass eine enorme Speichermenge zugewiesen wurde, in vielen Fällen mehr als die verfügbare Menge. Dies bedeutet nicht, dass dieser Speicher jemals verwendet wurde. Er wurde also in der Auslagerungsdatei zugewiesen, aber nie verwendet.

Allerdings wurde behauptet, dieser Fehler sei in Version 12 behoben worden. Es besteht jedoch die Möglichkeit, dass er immer noch vorhanden ist.

Eine weitere Möglichkeit ist, dass Oracle einen Speicherverlust hat. Sie können dies testen, indem Sie unmittelbar nach einem Neustart den festgeschriebenen Speicher überprüfen, nachdem Oracle gestartet ist und die SELECT-Anweisung ausgeführt wurde.

Wenn Ihre Tests auf einen Fehler bei der Speicherzuweisung von Oracle hinweisen, sollten Sie diesen melden.

verwandte Informationen