Sie sind auf Seite 1von 9

Hinweis 617416 Hinweissprache: Deutsch

Oracle9i: Dynamische SGA


Version: 22 Gltigkeit:
gltig seit 03.01.2006

Zusammenfassung
Symptom
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

Lsung Gliederung dieses Hinweises


1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. Untersttzung durch BR*Tools und SAPDBA Generelle Empfehlung Dynamic SGA - Beschreibung Dynamic SGA - Funktionsweise, Voraussetzungen, Restriktionen Dynamic SGA - Vorteile Dynamic SGA - Besonderheiten Dynamic SGA - Wichtige Hinweise Dynamic SGA - Migration Dynamic SGA - Administration Dynamic SGA - Monitoring Dynamic SGA - Speicherbereiche + SGA-Gre

Untersttzung durch BR*Tools und SAPDBA


Dieses neue Oracle9i-Feature ist transparent fr BR*Tools und SAPDBA. Wegen der SPFILE-Untersttzung wird eine BR*Tools Version 6.20 Patch-Level 103 oder hher empfohlen.

Generelle Empfehlung
Es wird empfohlen, im Rahmen des Datenbank-Upgrades nach Oracle9i auf
22.01.2009 Seite 1 von 9

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 einschlielich Oracle8i (8.1.7.x) war sowohl die SGA (= System Global Area) als Ganzes sowie die innerhalb der SGA vorhandenen Speicherbereiche hinsichtlich ihrer Gre beim Start der Instanz fixiert (=statisch). Fr SGA-Konfigurationsnderungen mute die Datenbank durchgestartet werden. Mit Oracle9i knnen nun die meisten der in der SGA vorhandenen Pufferbereiche dynamisch verndert (vergrert und auch verkleinert) und damit z.B. an verschiedene Arbeitslasten optimal angepat werden. Dieses Feature ist der Beginn einer noch andauernden Entwicklung des Oracle Servers, nderungen an der SGA-Konfiguration vornehmen zu knnen oder automatisch durchfhren zu lassen - ohne Stoppen der Instanz. Ergnzt wird dieses Feature noch durch einen sog. 'Buffer Cache Advisor'; dieser Mechanismus erlaubt Vorhersagen ber das Performance-Verhalten der Instanz bei verschiedenen Gren des Buffer Caches. Mehrfachblockgren ('Multiple Block size'), also Tablespaces mit verschiedenen Blockgren (2k, 4k, 8k, 16k, 32k), sind ebenfalls erstmals mit Oracle9i mglich. Voraussetzung fr 'Multiple Block Size' ist das 'Dynamische SGA'-Feature. Zum aktuellen Zeitpunkt ist noch nicht absehbar, ob im SAP-Umfeld 'Multiple Block Size' untersttzt 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 ermglicht nun eine Umkonfiguration der SGA zur Laufzeit (z.B. bei nderung des Lastprofiles oder weniger zur Verfgung stehendem physikalischen Speicher)

Dynamic SGA - Funktionsweise, Voraussetzungen, Restriktionen


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

sga_max_size: Dieser statische Parameter legt die maximale Gre der SGA fest (in Bytes), bis zu der die SGA dynamisch wachsen kann. Die Gren fr Buffer Cache, Shared Pool und Large Pool knnen zur Laufzeit angepat werden, solange die Summe ihrer Gren 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 wchst bei Bedarf in bestimmten Einheiten ('Granules'). Bei den meisten Plattformen wchst die SGA bis zu einer Gre von 128MB in Schritten von 4MB, danach in Schritten von 16MB (Windows 32 Bit: 8MB). Oracle rundet eine spezifizierte Gre einer SGA-Komponente ggf. auf die nchste ganze Granule-Gre. Wenn sga_max_size nicht explizit gesetzt wird, so setzt Oracle
Seite 2 von 9

22.01.2009

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 grer werden kann als beim Start, sondern nur kleiner. Daher ist es zweckmig, 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 fr sga_max_size spezifizierte Wert wird bereits beim Start der Instanz allokiert, auch wenn die Summe der einzelnen SGA-Komponenten geringer ist.

db_cache_size: Mit diesem neuen Parameter wird die Dyamische SGA aktiviert und die Gre 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 erhlt man folgende Fehlermeldung: die folgende Fehlermeldung: 'ORA-00381: cannot use both new and old parameters for buffer cache size specification'.

Folgende Parameter knnen nicht mit dem Dynamische SGA-Feature kombiniert werden: o o o DB_BLOCK_BUFFERS BUFFER_POOL_KEEP BUFFER_POOL_RECYCLE

Folgende Bereiche der SGA knnen mit Oracle 9.2 dynamisch verndert werden, wenn die SGA dynamisch konfiguriert ist: o o o Buffer Cache: DB_CACHE_SIZE Shared Pool : SHARED_POOL_SIZE Large Pool : LARGE_POOL_SIZE

Nicht dynamisch vernderbar bzw. nur mit Durchstarten der Instanz vernderbar sind nach wie vor: o o o Maximale SGA-Gre: SGA_MAX_SIZE Redo Log Buffer Java Pool : LOG_BUFFER : JAVA_POOL_SIZE

Einschrnkung fr 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). Fr Oracle-Systeme auf Windows, die entsprechend groe SGAs erfordern, sollte daher die 64-Bit-Architektur (Windows auf IA64) in Betracht gezogen werden.

Dynamic SGA - Vorteile

22.01.2009

Seite 3 von 9

Hinweis 617416 -

Oracle9i: Dynamische SGA

Gegenber der Memory-Verwaltung in Oracle8i bietet das Dynamic SGA Feature folgende Vorteile: o o o Dynamisches ndern von Buffer Cache und Shared Pool (ohne Restart) Recycle Pool und Keep Pool nicht mehr innerhalb des Buffer Cache Oracle interner Cache Advisor: Parameter STATISTICS_LEVEL, View V$DB_CACHE_ADVICE Festgelegt wird nur noch die SGA-Gesamtgre SGA_MAX_SIZE; innerhalb dieser Gre sind die anderen Buffer-Bereiche dynamisch nderbar (vergrerbar und verkleinerbar) Damit hat man nun bessere Mglichkeiten, die SGA dynamisch an die Erfordernisse anzupassen Mit V$DB_CACHE_ADVICE kann die SGA-Gre optimal angepat werden Das Sammeln von Daten fr den Cache Advisor kann an und ausgeschaltet werden Man kann verschiedene Lasten untersuchen und damit verschiedene SGA-Profile erstellen Fr Single-Instanz und RAC geeignet

o o

Dynamic SGA - Besonderheiten


Bisher zeigte der Befehl 'show sga' den tatschlich von der SGA allokierten. Bei dynamischer SGA wird nun jedoch der maximal mgliche Speicher, basierend auf sga_max_size, angezeigt, nicht der aktuell tatschlich 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

22.01.2009

Seite 4 von 9

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: Fr diesen Parameter sind festzustellen: o Aktuelle SGA-Gre (Untergrenze fr sga_max_size) SQL>show sga 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) Wieviel physikalischer Speicher des Datenbankservers kann von der Oracle-Instanz belegt werden (Obergrenze)? Pro Datenbankverbindung wird ein Oracle-Schattenproze erzeugt (Dedicated Server Modell). Der von diesen Prozessen belegte Speicher ist bei der Kalkulation des fr die SGA verfgbaren Speichers ebenfalls zu bercksichtigen (vgl. Hinweis 619876), mglichst so, da kein Paging stattfindet. Evtl. sind noch andere Oracle-Instanzen auf dem gleichen Server oder andere Anwendungen, die sich den physikalischen Speicher teilen mssen. Aus Performance-Grnden sollte soviel wie mglich an physikalischem Speicher der Oracle Instanz zugewiesen werden, wenigstens aber soviel wie bisher. Die SGA darf aber nicht so gro werden, da Paging (Swap, temporres Auslagern von Speicherseiten auf Platte) stattfindet. Dieser Nachteil wrde den Vorteil einer groen SGA berwiegen.

Berechnung von db_cache_size: Zu beachten: Bisher wurde die Gre des Buffer Cache durch die Anzahl der Blcke (db_block_buffers) spezifiziert. Der neue Parameter db_cache_size wird in Bytes angegeben. Fr eine unvernderte Gre 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 Blockgre verwenden als die primre Blockgre (Standardblockgre), sollten in der SGA auch keine Puffer fr diese Blockgren 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.
22.01.2009 Seite 5 von 9

Hinweis 617416 -

Oracle9i: Dynamische SGA

Der Parameter STATISTICS_LEVEL aktiviert noch weitere sog. 'Advisor' Oracle Server intern. Der bisher fr 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 fr '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 mssen nun Werte > 0 haben: SQL>show parameter sga_max_size SQL>show parameter db_cache_size Folgende alte SGA-Parameter mssen nun den Wert 0 haben: SQL>show parameter db_block_buffers SQL>show parameter buffer_pool_keep SQL>show parameter buffer_pool_recycle Unverndert ist folgender Parameter: SQL>show parameter db_block_size

Dynamic SGA - Administration


Anhand der Performance-View V$DB_CACHE_ADVICE kann man die Gre 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 fr das zustzliche Sammeln und Aufbereiten dieser Informationen ist bei einem produktiven SAP-Systemen mit einer mittleren CPU-Auslastung von 30-60% auf dem Datenbankserver akzeptabel. Zurcksetzen von sga_max_size auf den Minimalen Oracle-Default-Wert: SQL>alter system reset sga_max_size scope = spfile sid = '*'; Beispiel fr das Setzen von sga_max_size:
22.01.2009 Seite 6 von 9

Hinweis 617416 -

Oracle9i: Dynamische SGA

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

Dynamic SGA - Monitoring


Die Gre der SGA kann aufgrund eines administrativen Kommandos (z.B. Vergrern 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 Grenvernderungsoperationen: o V$SGA_CURRENT_RESIZE_OPS Aktuell stattfindene SGA-Grenvernderungsoperation(en) V$SGA_RESIZE_OPS Liste der letzen 100 durchgefhrten SGA-Grenvernderungsoperationen V$SGA_DYNAMIC_COMPONENTS V$SGA_DYNAMIC_COMPONENTS zeigt z.B. die aktuelle Gre sowie die bisherige Minimal- und Maximalgre einer SGA-Komponente, die Anzahl der stattgefundenen Grenvernderungen auf einer SGA-Komponente, die Art der letzten grenverndernden Operationen auf einer Komponente sowie auch die aktuelle Granule-Gre: SQL>select component, current_size, granule_size from v$sga_dynamic_components; V$SGA_DYNAMIC_FREE_MEMORY Anzeige des fr knftige SGA-Erweiterungen verfgbaren 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 Fixed Size Variable Size Database Buffers Redo Buffers SQL>

135339268 453892 109051904 25165824 667648

bytes bytes bytes bytes bytes

Es werden folgende unterschiedliche Bereiche der SGA angezeigt:

'Total System Global Area'


o (Maximale) Gesamtgre der SGA (inkl. aller Sub-Bereiche) in Bytes

'Fixed Size'

22.01.2009

Seite 7 von 9

Hinweis 617416 -

Oracle9i: Dynamische SGA

Enthlt allgemeine Information ber den Zustand der Datenbank und der Instanz; wird von den Hintergrundprozessen bentigt Enthlt keine Benutzerdaten Normalerweise ist dieser Bereich kleiner als 100k

o o

'Variable Size'
o Dieser Bereich hngt ab von den Parametern shared_pool_size, large_pooL_size,java_pool_size.

'Database Buffers'
o Gre des Buffer Cache; enthlt Kopien der Daten Blcke aus den Datendateien Gre: block_size * db_block_buffers oder db_cache_size

'Redo Buffers'
o Ringspeicher in der SGA, der die nderungsinformationen enthlt, die in die Redologs geschrieben werden Beeinflusst vom Parameter log_buffers, allerdings stimmen die angezeigten Werte 'Redo Buffers' und der Profilparameter 'LOG_BUFFER' nicht berein

Die Gre des von der SGA belegten physikalischen Speichers kann ungefhr 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: Freigegeben am: Proritt: Kategorie: Hauptkomponente Zustzliche Komponenten: Fr Kunden freigegeben 03.01.2006 14:41:09 Empfehlungen/Zusatzinfo Info zum Upgrade BC-DB-ORA Oracle BC-DB-ORA-DBA Datenbankadministration unter Oracle

Der Hinweis ist releaseunabhngig

22.01.2009

Seite 8 von 9

Hinweis 617416 -

Oracle9i: Dynamische SGA

Verwandte Hinweise
Nummer 939558 830576 789011 743328 712624 598678 592393 579540 550585 360438 Kurztext ORA-600 beim dynamischen ndern der System Global Area (SGA) Parameterempfehlungen fr Oracle 10g FAQ: Oracle Speicherbereiche Sammelhinweis: ORA-27102 Hoher CPU-Verbrauch durch Oracle Oracle9i: Neue Funktionalitt FAQ: Oracle ORA-00381, Oracle 9.x Datenbank lt sich nicht starten SAP-relevante Patches fr Solaris 9 auf SPARC SAP-relevante Patches fr Solaris 8 auf SPARC-Plattformen

Attribute
Attribut Datenbanksystem Wert ORACLE

22.01.2009

Seite 9 von 9