Sie sind auf Seite 1von 9
Hinweis 617416 - Oracle9i: Dynamische SGA

Hinweis 617416 -

Oracle9i: Dynamische SGA

Hinweissprache: Deutsch

Zusammenfassung

Symptom

Version: 22

Gültigkeit:

gültig seit 03.01.2006

Dies ist ein Dokumentationshinweis zur Beschreibung der neuen dynamischen Speicherverwaltung von Oracle, der sog. Dynamischen System Global Area ('Dynamic SGA'), eines neuen Features von Oracle9i.

Weitere Begriffe

Ursache und Voraussetzungen

Dokumentationshinweis zu Oracle9i: Dynamische SGA

Lösung

Gliederung dieses Hinweises

1. Unterstützung durch BR*Tools und SAPDBA

2. Generelle Empfehlung

3. Dynamic SGA - Beschreibung

4. Dynamic SGA - Funktionsweise, Voraussetzungen, Restriktionen

5. Dynamic SGA - Vorteile

6. Dynamic SGA - Besonderheiten

7. Dynamic SGA - Wichtige Hinweise

8. Dynamic SGA - Migration

9. Dynamic SGA - Administration

10. Dynamic SGA - Monitoring

11. Dynamic SGA - Speicherbereiche + SGA-Größe

Unterstützung durch BR*Tools und SAPDBA

Dieses neue Oracle9i-Feature ist transparent für BR*Tools und SAPDBA. Wegen der SPFILE-Unterstützung wird eine BR*Tools Version 6.20 Patch-Level 103 oder höher empfohlen.

Generelle Empfehlung

Es wird empfohlen, im Rahmen des Datenbank-Upgrades nach Oracle9i auf

Hinweis 617416 - Oracle9i: Dynamische SGA

Hinweis 617416 -

Oracle9i: Dynamische SGA

'Dynamische SGA' umzustellen, um die Vorteile dieses Features zu nutzen. Ab SAP WebAS 6.40 wird dieses Feature SAP-Standard bei einer Installation auf Basis von Oracle9i.

Dynamic SGA - Beschreibung

Bis einschließlich Oracle8i (8.1.7.x) war sowohl die SGA (= System Global Area) als Ganzes sowie die innerhalb der SGA vorhandenen Speicherbereiche hinsichtlich ihrer Größe beim Start der Instanz fixiert (=statisch). Für SGA-Konfigurationsänderungen mußte die Datenbank durchgestartet werden. Mit Oracle9i können nun die meisten der in der SGA vorhandenen Pufferbereiche dynamisch verändert (vergrößert und auch verkleinert) und damit z.B. an verschiedene Arbeitslasten optimal angepaßt werden. Dieses Feature ist der Beginn einer noch andauernden Entwicklung des Oracle Servers, Änderungen an der SGA-Konfiguration vornehmen zu können oder automatisch durchführen zu lassen - ohne Stoppen der Instanz.

Ergänzt wird dieses Feature noch durch einen sog. 'Buffer Cache Advisor'; dieser Mechanismus erlaubt Vorhersagen über das Performance-Verhalten der Instanz bei verschiedenen Größen des Buffer Caches.

Mehrfachblockgrößen ('Multiple Block size'), also Tablespaces mit verschiedenen Blockgrößen (2k, 4k, 8k, 16k, 32k), sind ebenfalls erstmals mit Oracle9i möglich. Voraussetzung für 'Multiple Block Size' ist das 'Dynamische SGA'-Feature. Zum aktuellen Zeitpunkt ist noch nicht absehbar, ob im SAP-Umfeld 'Multiple Block Size' unterstützt werden. Von einem

Einsatz in einem SAP-System wird daher abgeraten!

Der Einsatz verschieden konfigurierter SGAs ist auch schon heute üblich und wurde bisher nur über Durchstarten der Instanz und damit kurze System-Downtime erreicht. Das 'Dynamische SGA'-Feature ermöglicht nun eine Umkonfiguration der SGA zur Laufzeit (z.B. bei Änderung des Lastprofiles oder weniger zur Verfügung stehendem physikalischen Speicher)

Dynamic SGA - Funktionsweise, Voraussetzungen, Restriktionen

Um dieses neue Feature zu nutzen, sind neue Parameter zu verwenden:

o

sga_max_size:

Dieser statische Parameter legt die maximale Größe der SGA fest (in Bytes), bis zu der die SGA dynamisch wachsen kann. Die Größen für Buffer Cache, Shared Pool und Large Pool können zur Laufzeit angepaßt werden, solange die Summe ihrer Größen inklusive der anderen Komponenten (Fixed SGA, Variable, SGA, Redo Buffers) die Grenze von sga_max_size nicht überschreiten. Dieser Parameter dient in erster Linie dazu, ein 'Oversizing' der SGA und Paging zu verhindern. Die SGA wächst bei Bedarf in bestimmten Einheiten ('Granules'). Bei den meisten Plattformen wächst die SGA bis zu einer Größe von 128MB in Schritten von 4MB, danach in Schritten von 16MB (Windows 32 Bit:

8MB). Oracle rundet eine spezifizierte Größe einer SGA-Komponente ggf. auf die nächste ganze Granule-Größe. Wenn sga_max_size nicht explizit gesetzt wird, so setzt Oracle

Hinweis 617416 - Oracle9i: Dynamische SGA

Hinweis 617416 -

Oracle9i: Dynamische SGA

sga_max_size als Default-Wert (wenn db_cache_size gesetzt ist) auf die Summe aller SGA-Komponenten beim Start der Instanz. Daraus folgt, daß die SGA nicht größer werden kann als beim Start, sondern nur kleiner. Daher ist es zweckmäßig, diesen Parameter explizit zu auf einen sinnvollen Maximalwert zu setzen, bis zu dem die SGA dynamisch -ohne System-Downtime- wachsen kann, ohne daß Paging stattfindet. Der für sga_max_size spezifizierte Wert wird bereits beim Start der Instanz allokiert, auch wenn die Summe der einzelnen SGA-Komponenten geringer ist.

o db_cache_size:

Mit diesem neuen Parameter wird die Dyamische SGA aktiviert und die Größe des Buffer Cache definiert. Der alte Parameter db_block_buffers ist obsolet. Setzt man db_block_buffers zusammen mit sga_max_size oder db_cache_size, so erhält man folgende Fehlermeldung: die folgende Fehlermeldung: 'ORA-00381: cannot use both new and old parameters for buffer cache size specification'.

Folgende Parameter können nicht mit dem Dynamische SGA-Feature kombiniert werden:

o

DB_BLOCK_BUFFERS

o

BUFFER_POOL_KEEP

o

BUFFER_POOL_RECYCLE

Folgende Bereiche der SGA können mit Oracle 9.2 dynamisch verändert werden, wenn die SGA dynamisch konfiguriert ist:

o

Buffer Cache: DB_CACHE_SIZE

o

Shared Pool : SHARED_POOL_SIZE

o

Large Pool : LARGE_POOL_SIZE

Nicht dynamisch veränderbar bzw. nur mit Durchstarten der Instanz veränderbar sind nach wie vor:

o

Maximale SGA-Größe: SGA_MAX_SIZE

o

Redo Log Buffer

: LOG_BUFFER

o

Java Pool

: JAVA_POOL_SIZE

Einschränkung für Windows Plattform

Das Feature 'Dynamic SGA' kann nicht mit der erweiterten Speicherverwaltung von Microsoft Windows 2000 (32 Bit), dem sog. 'Address Windowing Extentions (AWE)' kombiniert werden. (Metalink-Hinweis 225349.1). Für Oracle-Systeme auf Windows, die entsprechend große SGAs erfordern, sollte daher die 64-Bit-Architektur (Windows auf IA64) in Betracht gezogen werden.

Dynamic SGA - Vorteile

Hinweis 617416 - Oracle9i: Dynamische SGA

Hinweis 617416 -

Oracle9i: Dynamische SGA

Gegenüber der Memory-Verwaltung in Oracle8i bietet das Dynamic SGA Feature folgende Vorteile:

o

Dynamisches Ändern von Buffer Cache und Shared Pool (ohne Restart)

o

Recycle Pool und Keep Pool nicht mehr innerhalb des Buffer Cache

o

Oracle interner Cache Advisor: Parameter STATISTICS_LEVEL, View V$DB_CACHE_ADVICE

o

Festgelegt wird nur noch die SGA-Gesamtgröße SGA_MAX_SIZE; innerhalb dieser Größe sind die anderen Buffer-Bereiche dynamisch änderbar (vergrößerbar und verkleinerbar)

o

Damit hat man nun bessere Möglichkeiten, die SGA dynamisch an die Erfordernisse anzupassen

o

Mit V$DB_CACHE_ADVICE kann die SGA-Größe optimal angepaßt werden

o

Das Sammeln von Daten für den Cache Advisor kann an und ausgeschaltet werden

o

Man kann verschiedene Lasten untersuchen und damit verschiedene SGA-Profile erstellen

o

Für Single-Instanz und RAC geeignet

Dynamic SGA - Besonderheiten

Bisher zeigte der Befehl 'show sga' den tatsächlich von der SGA allokierten. Bei dynamischer SGA wird nun jedoch der maximal mögliche Speicher, basierend auf sga_max_size, angezeigt, nicht der aktuell tatsächlich allokierte Speicher!

Dynamic SGA - Wichtige Hinweise

Sun Solaris 8: Bitte Hinweis 360438 beachten! Sun Solaris 9: Bitte Hinweis 550585 beachten!

Dynamic SGA - Migration

Um auf eine Dynamische SGA umzustellen, kann man wie folgt vorgehen:

1. Anzeige der aktuellen Einstellungen SQL>show sga SQL>show parameter db_block_size Alte, noch aktive Parameter:

SQL>show parameter db_block_buffers SQL>show parameter buffer_pool_keep SQL>show parameter buffer_pool_recycle Neue, zu setzende Parameter:

SQL>show parameter sga_max_size SQL>show parameter cache_size SQL>show parameter statistics_level

Hinweis 617416 - Oracle9i: Dynamische SGA

Hinweis 617416 -

Oracle9i: Dynamische SGA

2. Bestimmung der neuen Parameter

Bestimmung von Keep-Pool und Recycle-Pool:

SQL>show parameter buffer_pool_keep SQL>show parameter buffer_pool_recycle Setze die neuen Parameter gleich den alten Werten, also:

db_recycle_cache_size = buffer_pool_recycle db_keep_cache_size = buffer_pool_keep Vgl. Hinweis 564861. Im Regelfall sind diese beiden Parameter nicht gesetzt.

Berechnung von sga_max_size:

Für diesen Parameter sind festzustellen:

o

Aktuelle SGA-Größe (Untergrenze für sga_max_size) SQL>show sga

o

Physikalischer Speicher des Datenbankservers (max. Obergrenze) Feststellen des physikalischen Speichers:

Unix: z.B. mit dem top-Befehl (/usr/local/bin/top -> Memory) Windows: z.B. aus den System Settings (Task Manager)

o

Wieviel physikalischer Speicher des Datenbankservers kann von der Oracle-Instanz belegt werden (Obergrenze)?

o

Pro Datenbankverbindung wird ein Oracle-Schattenprozeß erzeugt (Dedicated Server Modell). Der von diesen Prozessen belegte Speicher ist bei der Kalkulation des für die SGA verfügbaren Speichers ebenfalls zu berücksichtigen (vgl. Hinweis 619876), möglichst so, daß kein Paging stattfindet.

o

Evtl. sind noch andere Oracle-Instanzen auf dem gleichen Server oder andere Anwendungen, die sich den physikalischen Speicher teilen müssen.

o

Aus Performance-Gründen sollte soviel wie möglich an physikalischem Speicher der Oracle Instanz zugewiesen werden, wenigstens aber soviel wie bisher. Die SGA darf aber nicht so groß werden, daß Paging (Swap, temporäres Auslagern von Speicherseiten auf Platte) stattfindet. Dieser Nachteil würde den Vorteil einer großen SGA überwiegen.

Berechnung von db_cache_size:

Zu beachten: Bisher wurde die Größe des Buffer Cache durch die Anzahl der Blöcke (db_block_buffers) spezifiziert. Der neue Parameter db_cache_size wird in Bytes angegeben. Für eine unveränderte Größe des Buffer Cache setze

db_cache_size = db_block_buffers * db_block_size

Bestimmung von db_2k_cache_size, db_4k_cache_size etc. Solange keine Tablespaces in der Datenbank angelegt werden sollen, die eine andere Blockgröße verwenden als die primäre Blockgröße (Standardblockgröße), sollten in der SGA auch keine Puffer für diese Blockgrößen allokiert werden.

db_cache_advice und statistics_level Der Parameter statistics_level muß auf TYPICAL gestellt werden. Erst dann werden die Statistiken in der View V$DB_CACHE_ADVICE bereitgestellt.

Hinweis 617416 - Oracle9i: Dynamische SGA

Hinweis 617416 -

Oracle9i: Dynamische SGA

Der Parameter STATISTICS_LEVEL aktiviert noch weitere sog. 'Advisor' Oracle Server intern.

Der bisher für V$DB_CACHE_ADVICE speziell vorgesehene Parameter DB_CACHE_ADVICE wurde durch den Parameter STATISTICS_LEVEL ersetzt. DB_CACHE_ADVICE sollte daher nicht mehr benutzt werden. Bisher galt:

SQL>alter system set DB_CACHE_ADVICE=ON; Jetzt gilt:

SQL>alter system set statistics_level='TYPICAL';

3. Setzen der neuen Parameter

Setze für 'X' den oben berechneten Wert. SQL>connect / as sysdba SQL>REM Delete old SGA parameter SQL>alter system reset buffer_pool_keep scope = spfile sid='*'; SQL>alter system reset buffer_pool_recycle scope = spfile sid='*'; SQL>alter system reset db_block_buffers scope = spfile sid='*'; SQL>REM Set new SGA parameter SQL>alter system set sga_max_size=X scope = spfile; SQL>alter system set db_cache_size=X scope = spfile; SQL>REM statistics_level = ALL or TYPICAL SQL>alter system set statistics_level='TYPICAL' scope = spfile; Falls notwendig, setze:

SQL>alter system set db_keep_cache_size=X scope = spfile; SQL>alter system set db_recycle_cache_size=X scope = spfile;

4. Datenbank durchstarten, um die neuen Parameter zu aktivieren:

SQL>connect / as sysdba SQL>shutdown SQL>startup SQL>show sga

Folgende SGA-Parameter müssen nun Werte > 0 haben:

SQL>show parameter sga_max_size SQL>show parameter db_cache_size Folgende alte SGA-Parameter müssen nun den Wert 0 haben:

SQL>show parameter db_block_buffers SQL>show parameter buffer_pool_keep SQL>show parameter buffer_pool_recycle Unverändert ist folgender Parameter:

SQL>show parameter db_block_size

Dynamic SGA - Administration

Anhand der Performance-View V$DB_CACHE_ADVICE kann man die Größe der SGA optimal einstellen. Oracle sammelt die dazu notwendigen Daten, sobald der init.ora-Parameter DB_CACHE_ADVICE entsprechend gesetzt ist. SQL>ALTER SYSTEM SET STATISTICS_LEVEL='TYPICAL'; V$DB_CACHE_ADVICE sammelt Daten seit dem letzten Instanz-Start. Der Overhead an CPU für das zusätzliche Sammeln und Aufbereiten dieser Informationen ist bei einem produktiven SAP-Systemen mit einer mittleren CPU-Auslastung von 30-60% auf dem Datenbankserver akzeptabel.

Zurücksetzen von sga_max_size auf den Minimalen Oracle-Default-Wert:

SQL>alter system reset sga_max_size scope = spfile sid = '*';

Beispiel für das Setzen von sga_max_size:

Hinweis 617416 - Oracle9i: Dynamische SGA

Hinweis 617416 -

Oracle9i: Dynamische SGA

SQL>alter system set sga_max_size = 800M scope = spfile;

Dynamic SGA - Monitoring

Die Größe der SGA kann aufgrund eines administrativen Kommandos (z.B. Vergrößern des Buffer Cache) wachsen, schrumpfen (z.B. bei Verkleinern des Buffer Cache) oder auch aufgrund von Oracle interner, Oracle- gesteuerter Prozesse.

Folgende Oracle Performance View informieren über den Zustand von von SGA-Komponenten sowie über Größenveränderungsoperationen:

o

V$SGA_CURRENT_RESIZE_OPS Aktuell stattfindene SGA-Größenveränderungsoperation(en)

o

V$SGA_RESIZE_OPS Liste der letzen 100 durchgeführten SGA-Größenveränderungsoperationen

o

V$SGA_DYNAMIC_COMPONENTS V$SGA_DYNAMIC_COMPONENTS zeigt z.B. die aktuelle Größe sowie die bisherige Minimal- und Maximalgröße einer SGA-Komponente, die Anzahl der stattgefundenen Größenveränderungen auf einer SGA-Komponente, die Art der letzten größenverändernden Operationen auf einer Komponente sowie auch die aktuelle Granule-Größe:

SQL>select component, current_size, granule_size from v$sga_dynamic_components;

o

V$SGA_DYNAMIC_FREE_MEMORY Anzeige des für künftige SGA-Erweiterungen verfügbaren Speichers

Dynamic SGA - Speicherbereiche

Nach dem Starten einer Instanz kann man sich die SGA anzeigen lassen mit folgendem Befehl:

SQL>show sga

Beispiel:

SQL>show sga

Total System Global Area 135339268 bytes

Fixed Size Variable Size Database Buffers Redo Buffers SQL>

453892 bytes 109051904 bytes 25165824 bytes 667648 bytes

Es werden folgende unterschiedliche Bereiche der SGA angezeigt:

'Total System Global Area'

o (Maximale) Gesamtgröße der SGA (inkl. aller Sub-Bereiche) in Bytes

'Fixed Size'

Hinweis 617416 - Oracle9i: Dynamische SGA

Hinweis 617416 -

Oracle9i: Dynamische SGA

o

Enthält allgemeine Information über den Zustand der Datenbank und der Instanz; wird von den Hintergrundprozessen benötigt

o

Enthält keine Benutzerdaten

o

Normalerweise ist dieser Bereich kleiner als 100k

'Variable Size'

o Dieser Bereich hängt ab von den Parametern shared_pool_size, large_pooL_size,java_pool_size.

'Database Buffers'

o

Größe des Buffer Cache; enthält Kopien der Daten Blöcke aus den Datendateien

o

Größe: block_size * db_block_buffers oder db_cache_size

'Redo Buffers'

o

Ringspeicher in der SGA, der die Änderungsinformationen enthält, die in die Redologs geschrieben werden

o

Beeinflusst vom Parameter log_buffers, allerdings stimmen die

angezeigten Werte

'Redo Buffers' und der Profilparameter

'LOG_BUFFER' nicht überein

Die Größe des von der SGA belegten physikalischen Speichers kann ungefähr mit der folgenden Formel berechnet werden:

DB_CACHE_SIZE+DB_KEEP_CACHE_SIZE+DB_RECYCLE_CACHE_SIZE+DB_nK_CACHE_SIZE+

SHARED_POOL_SIZE+LARGE_POOL_SIZE+JAVA_POOL_SIZE+LOG_BUFFERS+1M

Kopfdaten

Freigabestatus:

Für Kunden freigegeben

Freigegeben am:

03.01.2006 14:41:09

Prorität:

Empfehlungen/Zusatzinfo

Kategorie:

Info zum Upgrade

Hauptkomponente Zusätzliche Komponenten:

BC-DB-ORA Oracle

BC-DB-ORA-DBA Datenbankadministration unter Oracle

Der Hinweis ist releaseunabhängig

Hinweis 617416 - Oracle9i: Dynamische SGA

Hinweis 617416 -

Oracle9i: Dynamische SGA

Verwandte Hinweise

Nummer

Kurztext

939558

ORA-600 beim dynamischen Ändern der System Global Area (SGA)

830576

Parameterempfehlungen für Oracle 10g

789011

FAQ: Oracle Speicherbereiche

743328

Sammelhinweis: ORA-27102

712624

Hoher CPU-Verbrauch durch Oracle

598678

Oracle9i: Neue Funktionalität

592393

FAQ: Oracle

579540

ORA-00381, Oracle 9.x Datenbank läßt sich nicht starten

550585

SAP-relevante Patches für Solaris 9 auf SPARC

360438

SAP-relevante Patches für Solaris 8 auf SPARC-Plattformen

Attribute

Attribut

Wert

Datenbanksystem

ORACLE