Oracle a simplificat la fiecare versiune managementul memoriei astfel începând cu versiunea 9i a introdus managementul automat al PGA-ului cu ajutorul parametrului PGA_AGGREGATE_TARGET, în versiunea 10g a introdus managementul automat al SGA-ului (ASMM) prin parametrul SGA_TARGET iar o data cu versiunea 11g a fost lansat automatic memory managemant (AMM). In unele situații eu prefer sa am un control mai bun asupra alocării memoriei în PGA si SGA, de aceea prefer sa folosesc ASMM. In următoarele rânduri voi dezactiva AMM si voi activa ASMM pe OS ce rulează RedHat.

--backup

SQL> create pfile from spfile;

--Disable AMM

SQL> alter system reset memory_max_target scope=spfile;

System altered.

SQL> alter system reset memory_target  scope=spfile;

System altered.

--Enable ASMM

SQL> alter system set sga_target=20G scope=spfile;

System altered.

SQL> alter system set sga_max_size=20G scope=spfile;

System altered.

SQL> alter system set pga_aggregate_target=16G scope=spfile;

System altered.

--un restart al bazei de date ar trebui sa activeze noile configurari

SQL> shutdown immediate;

Database closed.

Database dismounted.

ORACLE instance shut down.
SQL> startup
ORA-27102: out of memory

Linux-x86_64 Error: 28: No space left on device

Additional information: -67108864

Additional information: 1

Eroarea nu este foarte intuitiva dar problema cu siguranța vine din cauza parametrilor de kernel care trebuiau verificați înainte de a reporni baza.

Check the page size:
$getconf PAGE_SIZE

4096

$cat /etc/sysctl.conf | grep kernel.shmall

kernel.shmall = 2097152

Dupa cum este setat kernel.shmall, sga_target poate avea cel mult valoarea 8G.

Valoarea corespunzătoare configurării dorite trebuie sa fie următoarea:

1024 * 1024 * 1024 * 20 / 4096 = 5242880

Prin urmare se modifica kernel.shmall cu noua valoare 5242880 și încercam din nou sa pornim baza de date.

SQL> startup
ORA-27102: out of memory

Linux-x86_64 Error: 28: No space left on device

Additional information: -67108864

Additional information: 1

Aceeași eroare! Pe aceasta baza parametrul PROCESSES are o valoare mai mare decât cea implicita de aceea parametrul SEMMNI ar trebui modificat pentru ca sistemul de operare sa poată găzdui mai multe semafoare.

$ /sbin/sysctl -a | grep sem
kernel.sem = 250 32000 100 128

Se modifica kernel.sem în 250 32000 100 200

SQL> startup
ORACLE instance started.

Total System Global Area 2.1379E+10 bytes

Fixed Size                  2262656 bytes

Variable Size            3758098816 bytes

Database Buffers         1.7583E+10 bytes

Redo Buffers               36073472 bytes

Database mounted.

Database opened.

Instanta a fost pornita cu succes iar ASMM a fost activat.

Lasă un răspuns

Completează mai jos detaliile despre tine sau dă clic pe un icon pentru autentificare:

Logo WordPress.com

Comentezi folosind contul tău WordPress.com. Dezautentificare / Schimbă )

Poză Twitter

Comentezi folosind contul tău Twitter. Dezautentificare / Schimbă )

Fotografie Facebook

Comentezi folosind contul tău Facebook. Dezautentificare / Schimbă )

Fotografie Google+

Comentezi folosind contul tău Google+. Dezautentificare / Schimbă )

Conectare la %s