Limitar memoria PGA por sesión

Jos?ntonio
26 de Enero del 2005
Hola.

Tengo Oracle 9.2.0.1. Como limito el uso de PGA por sesión??

Gracias y saludos

Adrian
26 de Enero del 2005
Suponiento que el tipo de servidor sea dedicado (o sea, un proceso por conexión) tienes que establecer workarea_size_policy=auto en tu init.ora, y luego poner el valor máximo de ram que quieras por proceso con el parámetro pga_aggregate_target

Ten en cuenta que oracle no garantiza que no se sobrepasará el límite que pongas en pga_aggregate_target, mas bien "lo intenta".

Saludos

Jos?ntonio
26 de Enero del 2005
Hola,

El tipo de servidor es dedicado. El parámetro workarea_size_policy lo tengo en auto, y en pga_aggregate_target tengo 512 MB.
Tengo entendido que este último parámetro es el valor máximo de todos los procesos del servidor adjuntos de la instancia, no el valor máximo de cada proceso.

La cuestión es que me sobrepasa con creces este valor de 512MB, ya que un solo proceso llega a necesitar 1.4 GB.


Q puedo hacer??

Gracias

Adrian
26 de Enero del 2005
El parametro pga_aggregate_target es por sesión, si tienes dudas puedes consultarlo en la documentación de oracle en http://tahiti.oracle.com.

Con este parámetro oracle no limita el consumo de memoria, lo que hace es que cuando un proceso deja de necesitar ram, devuelve al servidor toda la que esté por encima del valor definido en pga_aggregate_target.

Lo que tienes que hacer es averiguar por qué ese proceso consume tanta memoria, puede deberse a ordenaciones muy bestias, o a que se usan tablas plsql extremadamente grandes... saca una traza de las sesiones problemáticas para encontrar la consulta o consultas que se están comiendo la ram y modifícalas.

Saludos

Jos?ntonio
26 de Enero del 2005
Hola,

Según la descripción del parámetro en la consola de oracle enterprise manager es:

Descripción: Especifica las memorias PGA agregadas de destino de
todos los procesos del servidor adjuntos a la instancia.
Defina este parámetro en un valor positivo antes de activar
la definición automática de áreas de trabajo. Esta memoria no
reside en SGA. La base de datos utiliza este parámetro como
cantidad de memoria PGA de destino que utiliza. Al definir
este parámetro, reste la SGA de la memoria total del sistema
disponible para la instancia Oracle. La memoria restante se
puede asignar a pga_aggregate_target.
Rango de Valores: Valores enteros más la letra K, M o G para especificar este límite en kilobytes, megabytes o gigabytes. El valor mínimo es 10 M y el máximo es 4000 G
Valor por Defecto: "No Especificado", que significa que el ajuste automático de las áreas de trabajo está completamente desactivado.


El proceso que consume la memoria ya está modificado, pero yo lo que quiero es saber si hay algún modo de limitar dicho consumo para no tener que estar pendiente de las consultas de los usuarios.

Gracias por tu ayuda.

Saludos

Adrian
26 de Enero del 2005
Tienes razón, el valor de pga_aggregate_target es por instancia y no por proceso...

Hasta donde yo se, no hay ningún medio para limitar la ram usada por un proceso.

Saludos