Wächst die SGA, lohnt sich ein kurzer Blick auf die Speicherseiten: Oracle kann sie unter Linux über vorab reservierte HugePages bereitstellen. Das spart dem Betriebssystem Verwaltungsaufwand für Seitentabellen und hilft, den Speicher für die Datenbank effizienter zu nutzen.
Dieser Tipp gilt ausschließlich für Linux. Unter Windows heißt das entsprechende Konzept Large Pages, darauf gehen wir hier nicht ein. Oracle empfiehlt Standard-HugePages für Oracle-Datenbanken unter Linux. Als praktische Orientierung nennt Oracle Linux Systeme mit mehr als 16 GB RAM und einer gesamten SGA von mehr als 8 GB.
Auf dem Datenbankserver:
grep -E 'HugePages_(Total|Free|Rsvd|Surp)|Hugepagesize' /proc/meminfo
Nach dem Datenbankstart sollte HugePages_Free kleiner als HugePages_Total sein. Die belegte Kapazität lässt sich grob aus (HugePages_Total - HugePages_Free) × Hugepagesize ableiten.
HugePages_Rsvd sind bereits zugesagte, aber noch nicht vollständig belegte Seiten. Ein höherer Free-Wert bedeutet deshalb nicht automatisch, dass der Pool zu groß ist. Umgekehrt sollte man auch nicht unnötig viel reservieren: Oracle empfiehlt, höchstens 70% des Arbeitsspeichers für HugePages vorzusehen.
Laufen mehrere Oracle- oder ASM-Instanzen auf dem Server, zeigt dieser Befehl nur die gesamte Nutzung des Pools. Er verrät also noch nicht, welche einzelne Datenbank die Seiten belegt. Den Nachweis für eine bestimmte Instanz liefert der Blick in ihr Alert Log im dritten Schritt.
In SQL*Plus:
show parameter use_large_pages
show parameter memory_target
show parameter memory_max_target
select round(sum(value) / 1024 / 1024) as sga_mb
from v$sga;
use_large_pages steuert die Nutzung für die SGA. Mit TRUE oder AUTO kann die Instanz bei einem zu kleinen Pool teilweise mit regulären Seiten starten. ONLY und AUTO_ONLY verhindern einen Start, wenn die gesamte SGA nicht mit Large Pages versorgt werden kann. Automatic Memory Management (AMM) über MEMORY_TARGET oder MEMORY_MAX_TARGET ist unter Oracle 19c nicht mit HugePages kompatibel. Beide Parameter müssen zurückgesetzt sein.
Die Anzahl der benötigten Seiten ergibt sich aus der gesamten SGA aller gleichzeitig laufenden Datenbank- und ASM-Instanzen, geteilt durch Hugepagesize und aufgerundet.
Ist der Pool vorhanden, wird aber nicht genutzt, lohnt sich noch dieser kurze Check als Oracle Betriebssystembenutzer:
ulimit -l
Ein zu kleiner memlock-Grenzwert kann die Nutzung verhindern.
Der konkrete Instanznachweis steht nach einem Neustart im Alert Log.
Mit ADRCI:
adrci> set homepath diag/rdbms/<db_unique_name>/<instance_name>
adrci> show alert -p “message_text like '%Large Pages%'”
Oder einfach direkt im Alert Log:
alert_log="$ORACLE_BASE/diag/rdbms/<db_unique_name>/<instance_name>/trace/alert_<instance_name>.log"
grep -i -C 2 'large pages' "$alert_log"
<db_unique_name> und <instance_name> ersetzen Sie durch die Werte der Instanz. Das Verzeichnis entspricht dem ADR-Pfad der Datenbank. Bei Bedarf zeigt show parameter diagnostic_dest den Ausgangspunkt. Wer nur nachsehen möchte, braucht ADRCI also nicht zwingend.
Die dort gemeldete Seitenzahl sollte zur Größe der SGA passen. Bei TRUE oder AUTO kann Oracle bei einem zu kleinen Pool auch mit einer Mischung aus großen und regulären Speicherseiten starten. Wichtig ist dabei die Meldung des letzten Instanzstarts, ältere Einträge können einen inzwischen geänderten Zustand zeigen.
Transparent Huge Pages (THP) sind ein separates Linux-Feature und nicht mit den vorab reservierten Standard-HugePages zu verwechseln. AnonHugePages zeigt daher weder den HugePages-Pool noch die Belegung der Oracle-SGA an.
thp_file=/sys/kernel/mm/transparent_hugepage/enabled
[ -r "$thp_file" ] || thp_file=/sys/kernel/mm/redhat_transparent_hugepage/enabled
cat “$thp_file”
Oracle empfiehlt für Datenbankserver mit UEK-Releases vor UEK7 die Deaktivierung (never). Ab UEK7 lautet die aktuelle Empfehlung madvise. Die eckigen Klammern in der Ausgabe kennzeichnen die aktive Einstellung, zum Beispiel always [madvise] never.
Ein kurzer Blick auf die HugePages-Konfiguration zeigt schnell, ob die Oracle-SGA den vorgesehenen Speicherbereich tatsächlich nutzt. Gerade bei gewachsenen Serverlandschaften oder vorab neu aufgesetzten Systemen lohnt sich dieser Check. Wenn Sie bei der Bewertung oder bei der passenden Auslegung Unterstützung benötigen, helfen wir Ihnen gerne weiter.
In unserer Know-How Datenbank finden Sie mehr als 300 ausführliche Beiträge zu den
Oracle-Themen wie DBA, SQL, PL/SQL, APEX und vielem mehr.
Hier erhalten Sie Antworten auf Ihre Fragen.