Oracle - DUDA SOBRE BUFFERS

   
Vista:

DUDA SOBRE BUFFERS

Publicado por alberto (3 intervenciones) el 10/06/2015 13:56:02
Buenos días tengo una serie de dudas existenciales.

Mis dudas son sobre MEMORY_TARGET, MAX TARGET, SGA, PGA.....

Supongamos que tengo una máquina con 48G de ram y arranco Oracle.

Total System Global Area xxxxxx bytes (como es un ejemplo no tengo datos=
Fixed Size xxx bytes
Variable Size xxxxxx bytes
Database Buffers xxxxx bytes
Redo Buffers xxx bytes

y veo con free de linux, me quedan 42G.

Esos 6GB libres como se donominan? MEMORY_TARGET?


Y si hacemos un esquema de jerarquía de buffers sería asi?

MEMORY_TARGET
->SGA_TARGET (System Global Area) SGA = Shared_Pool_Size + (Db_Block_Size * Db_Block_Buffers) + Log_Buffer
---->DB_BLOCK_BUFFERS (Database Buffer Cache)-
---->LOG_BUFFER (Buffer Redo Log)
---->SHARED_POOL_SIZE (Shared SQL Pool)
->PGA_AGGREGATE:TARGET (Program Global Area )

Además cuál es el objetivo de
MEMORY_MAX_TARGET?
SGA_MAX_SIZE?

¿Si quisiera configurar una instancia con unos parámetros estáticos y con esos 42GB libres dar a la instancia más de lo que tiene ahora que son unos 6GB, como se debería hacer?

Suponiendo que quiero darle 10GB para Oracle.

MEMORY_TARGET=10G ?
MEMORY_MAX_TARGET=10G ?

Si son valores diferentes, con que buffer se rellenaría esa diferencia?

Mi objetivo es aumentar el db_cache_size, pero no se que valores fijar.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

DUDA SOBRE BUFFERS

Publicado por Rafael (178 intervenciones) el 10/06/2015 14:15:04
Algunas definiciones que deberias conocer antes de moverle ...

MEMORY_TARGET: Cantidad de Memoria compartida que dispone ORACLE para la SGA y la PGA. Este valor se mueve conforme ORACLE ocupa el Recurso
MEMORY_MAX_TARGET: Limite Maximo de Memoria compartida, Este valor lo asignas la recomendacion es NO exceder del 60% de la memoria total del Sistema...

Asi pues si tienes 42GB de RAM no excedas de 24 G...

Ahora quieres Fijar o modificar el db_cache_size... que depende mas bien de la SGA...

La formula es un poco compleja pero segun la documentación:
4M * Numero de CPUs * Tamaño de Granularidad

La duda es ... teniendo el configurador automatico, los profiles para lomitar consumo, por que tendrias que modificar estos parametros ??? Que tunning sera mejor que el que va ajustando Oracle conforme le demandan recursos??
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

DUDA SOBRE BUFFERS

Publicado por alberto (3 intervenciones) el 10/06/2015 17:53:08
Entonces,

MEMORY_MAX_TARGET es el límite de memoria que se va a asignar por Oracle, nunca va a pasar de aquí.

MEMORY_TARGET: memoria mínima ocupada por SGA y PGA. que es menor que MAX. Pero si TARGET es 6 y MAX es 10, porque no poner directamente 10 en TARGET.

O es porque como mínimo utliza 6 pero tiene hasta 10 para momentos puntulaes. y lo normal es que esté en 6. (target).

Entonces en este caso yo tengo ahora 42GB libres para ya que alrrancar es lo que queda free.

Como puedo yo hacer para que deje de utilizar 6 GB y utilicd 24.?

Saco pfile
Paro BD
Cambio parametros:

MEMORY_MAX_TARGET=24G
MEMORY_TARGET=15G (para que vaya bien)

ahora necesito tunear el db_cache_size=5GB., tengo que establecer SGA_TARGET o lo pongo 0?

Gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

DUDA SOBRE BUFFERS

Publicado por Rafael (178 intervenciones) el 11/06/2015 09:17:07
Cualquier VALOR a 0 es decirle a ORACLE que se auto administre

De aqui que si la SGA es la suma de
Shared pool (SHARED_POOL_SIZE)
Large pool (LARGE_POOL_SIZE)
Java pool (JAVA_POOL_SIZE)
Streams pool (STREAMS_POOL_SIZE)

Si la pones a CERO sus hijos no importara cuanto les pongas se auto administraran...

Mi duda es para que quieres el db_cache_size a 5 GB que determino ese tamaño???
Vaya mis labores como DBA y en la experiencia me dicen que lo mejor es darle un tamaño al MEMORY_MAX_TARGET, y usar el manejo automatico de memoria
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

DUDA SOBRE BUFFERS

Publicado por alberto (3 intervenciones) el 12/06/2015 23:30:00
La bd en cuestión tiene unos 2,5 gb de SGA,. Además se ha detectado una contención en disco y para mejorarla y como la mayor parte de la BD son unos 4GB de datos, se ha decidido aumentar del db_cache_size a unos 5gb.

Hemos aumentado la memory_target a 10GB y mi intención era aumentar el parámetro db_cache_size a 5gb para que almacene lo máximo en ese buffer y no pase por disco.

Pero cual es mi sorpresa que pongo eso a 10gb pero no me permite cambiar el db_cache_size, ahora mismo no recuerdo si me mostraba un error o simplemente no hacía nada.

Lo cierto es que en la gráfica de EM no se mostraba el nuevo valor de sga como yo esperaba.

Al pasar memory_targer a 10gb, la gráfica sólo se observaba que cuando antes la PGA tenía 1 gb ahora pasó a tener 7,5gb y al usar las aplicaciones la db_cache_size iba subiendo restándose de la PGA.

Creo que ha funcionado pero no de forma automática, sino que el db_cache_size irá cogiendo memoria según la necesite.

Espero estar en lo cierto en mis especulaciones,

pero,

¿cuando dejará de subir la db_cache_size?

Si tengo 10 gb de memory_target, y la PGA como minimo llegará a 1gb, me quedan unos 9 para SGA, ¿podemos decir que db_cache_size, que el buffer más grande llegará a unos 7 u 8?

GRacias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

DUDA SOBRE BUFFERS

Publicado por Rafael (178 intervenciones) el 19/06/2015 09:00:11
Vaya esto cambia todo el alcance tienes una contencion de DISCO...

No de memoria, lo ideal seria resolver el problema por lo que es y no por paliativos, la contencion de disco se puede solucionar de diversos modos, empezando por discos mas rapidos y/o partir los table space en diversos datafiles.

Sobre todo lo segundo, veamos el problema que tienes seguramente es un problema de I/O, hay muchos usuarios accediendo al mismo disco, dudo mucho que ampliando el dbcache lo mejores.

Lo suyo seria monitorear que table spaces tienen dicha contencion, como hacer esto? con esta query:
1
2
3
SELECT name, phyrds, phywrts, readtim, writetim
FROM   v$filestat a, v$datafile b
WHERE  a.file#=b.file#;

Y una vez identificado los table spaces que mas se afectan (mas lectura/escritura tienen) separar en mas datafiles y/o en su defecto hasta moverlos de disco. para balancear un poco la carga de dichos procesos lectura escritura...

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar