Die System Global Area (SGA) hatte bisher immer eine feste statische Größe, die durch Initialisierungsparameter festgelegt war. Sie wurde (und wird immer noch) durch folgende Speicherbereiche bestimmt:
* Database Buffer Cache
* Shared Pool
* Large Pool
* Java Pool
* Log Buffer
* Dictionary Cache
Wollte man nun - sei es wegen Performance Engpässen oder bestimmten Oracle Fehlern (z. B. ORA-04135) - die Größe dieser Speicherbereiche ändern, so musste man bisher die Instanz neu durchstarten. Dies ist natürlich bei 24x7 Datenbanken die denkbar schlechteste Lösung.
Mit Oracle 9i können die wichtigsten Bereiche der SGA nun endlich dynamisch konfiguriert werden. Hierzu können Sie folgende Initialisierungsparameter
* DB_CACHE_SIZE und DB_nK_CACHE_SIZE
* SHARED_POOL_SIZE
* LARGE_POOL_SIZE ( Noch nicht möglich - siehe dazu auch weiter unten ! )
mittels ALTER SYSTEM SET <name> = <new value> ändern. Es werden immer ganze Vielfache eines sog. Granules allokiert (4M bei einer SGA_MAX_SIZE < 128M oder 16M sonst).
Hinweis:
Der neue Parameter SGA_MAX_SIZE legt die maximale Gesamtgröße der SGA fest. Diese darf durch die Summe dieser Buffer sowie aller weiteren allokierten Bereiche in der SGA (fixed SGA, variable SGA, Log Buffer) nicht überschritten werden.
Beispiel:
SQL> SHOW SGA
Total System Global Area 319587480 bytes
Fixed Size 279704 bytes
Variable Size 251658240 bytes
Database Buffers 67108864 bytes
Redo Buffers 540672 bytes
SQL>
SQL> SELECT NAME, VALUE
2 FROM V$PARAMETER
3 WHERE NAME IN ('sga_max_size', 'db_cache_size', 'shared_pool_size');
NAME VALUE
------------------------------ --------------------
shared_pool_size 50331648
sga_max_size 319587480
db_cache_size 67108864
SQL> ALTER SYSTEM SET SHARED_POOL_SIZE = 70M;
System altered.
SQL> SELECT NAME, VALUE
2 FROM V$PARAMETER
3 WHERE NAME IN ('sga_max_size', 'db_cache_size', 'shared_pool_size');
NAME VALUE
------------------------------ --------------------
shared_pool_size 83886080
sga_max_size 319587480
db_cache_size 67108864
SQL> ALTER SYSTEM SET SHARED_POOL_SIZE = 200M;
ALTER SYSTEM SET SHARED_POOL_SIZE = 200M
*
ERROR at line 1:
ORA-02097: parameter cannot be modified because
specified value is invalid
ORA-04033: Insufficient memory to grow pool
Dieser Fehler tritt auf, da versucht worden ist, mehr Speicher zu allokieren,
als über den Parameter SGA_MAX_SIZE definiert ist.
SQL> SHOW SGA
Total System Global Area 319587480 bytes
Fixed Size 279704 bytes
Variable Size 251658240 bytes
Database Buffers 67108864 bytes
Redo Buffers 540672 bytes
Über den neuen Parameter DB_CACHE_SIZE kann die Standardgröße des
Database Buffer Cache eingestellt werden. Dieser Parameter ersetzt
DB_BLOCK_BUFFERS (wobei dieser zwar auch weiterhin verwendet, jedoch
nicht dynamisch verändert werden kann).
Die Größen der anderen Buffer Caches lassen sich über die folgenden
Parameter einstellen:
* DB_2K_CACHE_SIZE
* DB_4K_CACHE_SIZE
* DB_8K_CACHE_SIZE
* DB_16K_CACHE_SIZE
* DB_32K_CACHE_SIZE
Hinweis:
Beim Setzen dieser Parameter muss darauf geachtet werden, dass zusätzlich zu DB_CACHE_SIZE nur diejenigen verwendet werden dürfen, die nicht der Standard Blockgröße entsprechen.
Über den Parameter SHARED_POOL_SIZE kann die Größe des Shared Pools dynamisch verändert werden. In früheren Releases war dieser Parameter statisch.
Über den Parameter LARGE_POOL_SIZE kann die Größe des Large Pools dynamisch verändert werden. In früheren Releases war dieser Parameter statisch.
Hinweis:
Derzeit ist der Parameter LARGE_POOL_SIZE (im Gegensatz zur Dokumentation) nocht nicht änderbar. Wahrscheinlich erst mit Oracle 9.2
Beispiel:
SQL> ALTER SYSTEM SET LARGE_POOL_SIZE = 10M;
ALTER SYSTEM SET LARGE_POOL_SIZE = 10M
*
ERROR at line 1:
ORA-02095: specified initialization parameter cannot be modified
Die View V$BUFFER_CACHE gibt Auskunft über die Allokierung und Deallokierung
von Speicher innerhalb der SGA.
Über die View V$DB_CACHE_ADVICE sind die Statistiken über die Verwendung der unterschiedlichen Buffer Pools verfügbar (nur nach Setzen des Parameters
DB_CACHE_ADVICE = ON).
Bitte nehmen Sie mich in den Verteiler der monatlichen Tipps & Tricks auf.