Configurar la memoria de Oracle tras la instalación.
1. Objetivo:
Se muestra, a modo de ejemplo, una forma de distribuir la memoria del sistema en una nueva instalación de ORACLE.
2. La memoria de ORACLE
El total disponible de memoria en un sistema tiene que estar configurado de forma que todos los componentes de ese sistema funcionen óptimamente. Una pauta a seguir para que el sistema quede bien configurado podría ser el siguiente:
Componentes del sistema | Memoria del Sistema |
Oracle SGA Componentes | ~ 50\% del total |
Sistema operativo + Otros componentes | ~15\% del total |
Memoria de usuario | ~ 35\% del total |
Esta es la primera pauta que podemos seguir a la hora de reservar o ver la memoria que se necesita o que se puede poner cómo máximo en un sistema para que Oracle funcione correctamente y los demás componentes del sistema puedan hacerlo también. ( habría que tener en cuenta también el número de usuarios que accederán concurrentemente al sistema ).
Una vez que hemos decidido que la SGA de nuestra base de datos ORACLE va a ser el 50\% de la memoria total del sistema. Esta memoria la tenemos que dividir entre los componentes que la forman. (Database buffer cache, shared_pool_area, fixed size, redo log buffer)
Componentes de la SGA | Memoria SGA |
Database Buffer Cache | ~80\% de la SGA |
Shared Pool Area | ~12\% de la SGA |
Fixed Size | ~1\% de la SGA |
Redo Log Buffer | ~0.1\% de la SGA |
La distribución puede venir bien para comenzar a establecer un sistema, aunque posteriormente podrán variar (y habrá que realizar tuning de ellos ) cuando se conozca o varíen el tipo de acceso a la base de datos, los patrones de acceso, usuarios concurrentes en el sistema etc.
Para entender mejor estas tablas proponemos el siguiente ejemplo:
Tengo un sistema configurado con 2 GB de memoria y con una estimación de 100 sesiones concurrentes. La aplicación requiere responder en pocos segundos. Es una base de datos que tiene muchas transacciones.
Componentes del sistema | Memoria asignada (en Mb) |
SGA para ORACLE | ~1024 |
Sistema operativo + Otros componentes | ~306 |
Memoria de usuario | ~694 |
Los 694 MB estarán disponibles para la PGA y todos los procesos servidores de Oracle.
Teniendo en cuenta que en el ejemplo hemos dicho que teníamos 100 sesiones concurrentes nos daría un promedio de unos 7 Megas (aproximadamente) para el consumo de cada usuario. (Tenemos que tener en cuenta que el SORT_AREA_SIZE forma parte de la PGA)
Por ultimo habría que distribuir la memoria que hemos dado a la SGA entre todos sus componentes.
Componentes de la SGA | Memoria asignada (en Mb) |
Database Buffer Cache | ~800 |
Shared Pool Area | ~128 – 188 |
Fixed Size + Misc | ~ 8 |
Redo Log Buffer | ~ 1 (promedio 512K) |