Blog Informáticos Murcia

Desde Murcia hacia el resto del mundo.

Blog Informáticos Murcia

Desde Murcia hacia el resto del mundo.

En este capitulo nos vamos a centrar en aprender las estructuras de memoria que maneja el servidor Oracle.

En la diapositiva podemos ver 2 estructuras de memoria dentro del servidor.arquitectura_base_de_datos_oracle2

  • La SGA (System Global Area) es la caché de nuestra instancia donde se cacheaban nuestras sentencias y los datos devueltos. Esta memoria es compartida por todos los procesos.
  • La  PGA (Program Global Area) es la zona de memoria privada de cada proceso Oracle (también para los procesos background), donde la información que contiene básicamente información sobre la sesión (que usuario esta conectado, privilegios,  que cursores están abiertos, buffer de ordenación ). Los procesos background tienen también su propia PGA

Memoria SGA y PGA

En la diapositiva superior podemos ver en la parte izquierda la estructura de un servidor dedicado y en la parte derecha un servidor compartido.

Podéis observar que en la parte izquierda (servidor dedicado) la SGA (estructura de memoria compartida que proporciona la instancia)  y para cada servidor dedicado tendremos su PGA (la sesión y la pila).

Si os dais cuenta que en el modelo de la izquierda (servidor dedicado) se desperdicia memoria ya que en la PGA se guarda un buffer de short area (que es utilizado para las ordenadores), pero ¿Qué pasa si esa sesión no hace ninguna ordenación? es memoria que se esta desperdiciando.

Para solucionar esto, Oracle a partir de la 9i introduce un concepto llamado PGA_AGGREGATE_TARGET, esto permite definir un espacio compartido parecido a la SGA para las PGAs.
En lugar de tener un buffer de ordenación (sort area) dentro del proceso de la PGA, estará dentro de un pool compartido, evitando la necesidad de asignar parámetros como SORT_AREA_SIZE o HASH_AREA_SIZE a las memorias privadas de la PGA.

El valor mínimo de el PAGA_AGGREGATE_TARGET es 10 M.

PGA_AGGREGATE_TARJET

¿Cómo configurar la memoria de Oracle?

Con Oracle 11g se configura la memoria del Servidor (SGA + PGA) con un sólo parámetro llamado MEMORY_TARGET.

En Oracle 11g solo hay que configurar el memory_target y memory_max_target.
En el memory target asignaremos el 80% de la memoria ram (como recomienda oracle)
El memory_max_target es la memoria maxima que puede utilizar, esto es utilizado ya que reserva la memoria RAM.

  • MEMORY_TARGET dimensiona SGA + PGA. Puede crecer manualmente hasta MEMORY_MAX_TARGET.
  • sga_tarjet, sga_max_size pga_aggregate_target se pueden dejar a cero (sga_max_size, por defecto, sería el 60% de memory_target), o con un valor mínimo.
  • En Linux, memory_target y memory_max_size están limitados por el valor de /dev/shm, para cada ua de las instancias que haya en el servidor: si /dev/shm vale 2Gb, entonces ninguno de ellos pueden valer más de 2Gb para cada instancia del servidor.
  • También hay que configurar el Bugger de Redo con log_buffer (igual que en 10g y versiones anteriores).
  • V$MEMORY_DYNAMIC_COMPONENTS: tamaños actuales.
  • V$MEMORY_TARGET_ADVICE: recomdaciones de MEMORY_TARGET.
  • V$MEMORY_RESIZE_OPSS: operaciones de AMM.

Recomendaciones de Oracle

  • Oracle recomienda asignar un máximo del 80% de la RAM de la máquina para el Servidor Oracle.
  • A su vez, de dicho 80%, recomienda asignar un máximo del 20% para la SGA

 

 

 

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.