Solución al error ORA-00855: PGA_AGGREGATE_TARGET cannot be set because of insufficient physical memory

 Hola Amig@s,

Si en la tarea de ampliar la ram asignada al SGA y PGA en Oracle, por poner un ejemplo a 16GB, obtenemos el error ORA-00855: PGA_AGGREGATE_TARGET cannot be set because of insufficient physical memory, se debe a que existe un limite establecido en la PGA a partir de la 12.2.0.1. Vamos a recrear los pasos desde la ampliación de la SGA misma, hasta el error al ampliar la PGA. Esta BBDD tenía asignado un sga_max_size de 6GB y lo mismo para el sga_target.

SQL> show parameter sga

NAME                                 TYPE        VALUE

------------------------------------ ----------- ------------------------------

allow_group_access_to_sga            boolean     FALSE

lock_sga                             boolean     FALSE

pre_page_sga                         boolean     TRUE

sga_max_size                         big integer 6016M

sga_min_size                         big integer 0

sga_target                           big integer 6016M

unified_audit_sga_queue_size         integer     1048576

Ampliamos la SGA y su limite

alter system set sga_max_size=16g scope=spfile;

alter system set sga_target=12g scope=spfile;

Aquí vemos que el sga_target no es 16GB sino menos, el sga_max_size define cuanto es el total de ram que Oracle puede usar del sistema operativo. Siendo el sga_target, el tamaño normal preasignado en el arranque de la instancia, y el sga_max_size es hasta cuanta ram, Oracle puede obtener del sistema operativo en determinados picos de consumo.

Ampliamos la PGA

alter system set pga_aggregate_target=4G scope=both;

alter system set pga_aggregate_target=4G scope=both

*

ERROR en lÝnea 1:

ORA-02097: no se puede modificar el parßmetro porque el valor especificado no

es vßlido

ORA-00855: PGA_AGGREGATE_TARGET cannot be set because of insufficient physical

memory.

SQL> show parameter pga

NAME                                 TYPE        VALUE

------------------------------------ ----------- ------------------------------

pga_aggregate_limit                  big integer 4002M

pga_aggregate_target                 big integer 2001M

Vemos que el límite establecido es de 4GB, de ahí el error. Tenemos que ampliar el límite a 8GB (en este caso) para que nos deje definir un target de 4GB.

alter system set pga_aggregate_limit=8G scope=spfile;

alter system set pga_aggregate_target=4G scope=spfile;

Finalmente...

SQL> show parameter sga

NAME                                 TYPE        VALUE

------------------------------------ ----------- ------------------------------

allow_group_access_to_sga            boolean     FALSE

lock_sga                             boolean     FALSE

pre_page_sga                         boolean     TRUE

sga_max_size                         big integer 16G

sga_min_size                         big integer 0

sga_target                           big integer 12G

unified_audit_sga_queue_size         integer     1048576

SQL> show parameter pga

NAME                                 TYPE        VALUE

------------------------------------ ----------- ------------------------------

pga_aggregate_limit                  big integer 8G

pga_aggregate_target                 big integer 4G

Espero que les resulte útil.
Salu2.
Share on Google Plus
    Blogger Comment

0 comentarios: