« Tuning SQL : Lo malo de usar UNION en los select :)Una gran enseñanza de vida , para que no nos quejemos tanto ... »

Calculando el tamaño actual de la Shared Pool



Me hicieron una consulta con respecto al tamaño actual de la Shared Pool cuando Oracle trabaja con ASMM (Automatic Shared Memory Management) o manejo automático de memoria.

Y el primer pensamiento fue casi instintivo

"Dentro de la gv$parameter2"



mm , pero dando una vuelta al tema, en esa vista aparece la Shared Pool Size en 0 , ¿el porqué? , pues con ASMM 5 buffers de memoria son trabajados de forma automática


DB_CACHE_SIZE
JAVA_POOL_SIZE
STREAMS_POOL_SIZE
LARGE_POOL_SIZE
SHARED_POOL_SIZE


Siempre los mostrará en 0 , ya que internamente el maneja un tamaño en esos buffers total y absolutamente dinámico

La pregunta calza de inmediato ¿Cómo veo el valor actual de la Shared Pool ?, no importanto si tengo o no ASMM |-|

Y añadiendo mas complejidad

¿Cómo obtengo el tamaño de la Shared Pool en una ambiente con ASMM y sin ASMM en versiones Oracle9i, Oracle10g y Oracle11g? CON EL MISMO SCRIPT??? :crazy:

Pues aca esta el ensayo de esa pequeña problemática

SI sga_target > 0 ENTONCES

Valor actual dentro de la SGA

select name ,
bytes/1024/1024 MB
from v$sgainfo
where upper(name) like '%SHARED POOL SIZE%'

Válido para : Oracle10g , Oracle11g
No válido para : Oracle9i

o

Valor actual del parámetro , como resize del MMAN y MMON

select component ,
current_size/1024/1024 MB
from v$sga_dynamic_components
where component like '%shared pool%'


Válido para : Oracle9i , Oracle10g , Oracle11g

0

Esta forma de consultar la shared pool , es la mas interna ya que no pasamos por ninguna vista del diccionario de datos

select b.ksppinm "Parametro re-oculto",
a.KSPFTCTXVL "Bytes",
a.KSPFTCTXDVL "Mb"
from X$KSPPCV2 a ,
x$ksppi b
where b.indx + 1 = a.kspftctxpn
and b.KSPPINM like '__shared_pool_size'

Válido para : Oracle10g , Oracle11g
No válido para : Oracle9i

o

Ejecutando el comando CREATE PFILE FROM SPFILE
Y dentro del init creado , buscar el parámetro __shared_pool_size

SQL> CREATE PFILE FROM SPFILE;

Válido para : Oracle10g , Oracle11g
No válido para : Oracle9i


SINO SI sga_target = 0 ENTONCES (con y sin bajada de instancia)

Valor actual dentro de la SGA

select name ,
bytes/1024/1024 MB
from v$sgainfo
where upper(name) like '%SHARED POOL SIZE%'

Válido para : Oracle10g , Oracle11g
No válido para : Oracle9i


o

Valor actual del parámetro , como resize del MMAN y MMON

select component ,
current_size/1024/1024 MB
from v$sga_dynamic_components
where component like '%shared pool%'

Válido para : Oracle9i , Oracle10g , Oracle11g

0

Esta forma de consultar la shared pool , es la mas interna ya que no pasamos por ninguna vista del diccionario de datos

select b.ksppinm "Parametro re-oculto",
a.KSPFTCTXVL "Bytes",
a.KSPFTCTXDVL "Mb"
from X$KSPPCV2 a ,
x$ksppi b
where b.indx + 1 = a.kspftctxpn
and b.KSPPINM like '__shared_pool_size'


Válido para : Oracle10g , Oracle11g
No válido para : Oracle9i


o

Mediante el parámetro seteado en el archivo de inicialización

SELECT value/1024/1024||' [MB]' alias_shared_pool_size
FROM gv$parameter2
WHERE name = 'shared_pool_size'
AND value <> '0'


Válido para : Oracle9i , Oracle10g , Oracle11g

FIN SI.

Saquen ustedes sus propias conclusiones para obtener ese maldito valor :>>

by Ligarius
07.08.09. 16:23:44. 562 words, 7605 views. Categories: Tuning / Performance ,