Introducción a los procesos
En Oracle, podemos clasificar a los procesos en tres grupos:
- Procesos de Usuario: Son esas aplicaciones o herramientas que se conectan con la base de datos.
- Procesos de base de Datos: Aquí podemos encontrar los “procesos servidores”, que son los que conectan las aplicaciones con las instancias de bases de datos y que se ejecutan cuando se establece una conexión, y los “procesos background”, que comienzan cuando se arranca una instancia.
- Listeners y Grid.
Veamos las posibilidades que nos proporciona Oracle en cuanto a procesos. Por ejemplo, ya sabemos que en el servidor tenemos una SGA, y varios procesos background, que van saliendo poco a poco a través de las distintas sesiones, y son los que se encargan de la gestión interna de la propia base de datos (escribiendo en los ficheros, el redo log, gestionando la memoria, etc).
Además tenemos los procesos clientes. Cuando se conecta algún cliente, habitualmente se conecta al Listener, y éste a su vez, genera un proceso servidor que atiende al cliente a la vez que trabaja con la SGA.
Estos procesos de servidor pueden ser de dos tipos, pueden ser dedicados o compartidos. Normalmente vamos a tener procesos dedicados, pero vamos a ver las diferencias entre uno y otro.
PROCESOS DEDICADOS: Los procesos dedicados funcionan de la siguiente manera:
- Una aplicación cliente, con código propio, pudiera ser por ejemplo código de Java.
- Esta aplicación cliente, va a tener su propio proceso dedicado, que es la opción predefinida en Oracle. El código de este proceso dedicado estará en SQL y PSQL.
- Cuando se conecte un nuevo cliente, pues tendrá su propio proceso dedicado. Y así cuantos clientes se conecten.
PROCESOS COMPARTIDOS: Los procesos compartidos o SHARED SERVERS, lo que intentan es hacer un uso más eficiente de los recursos, haciendo que más usuarios se puedan conectar con las mismas características físicas (CPU, memoria, etc.) Y funcionan de la siguiente manera:
- Digamos que tenemos 4 aplicaciones clientes. Si estas aplicaciones clientes fueran atendidas por procesos dedicados, entonces habría 4 procesos dedicados, cada uno atendiendo a una de estas aplicaciones clientes.
- Pero cuando trabajamos con procesos compartidos, lo que sucede es que las aplicaciones hacen las peticiones al Dispatcher, que es un proceso que actúa como una especie de intermediario.
- Además de los dispatchers, tenemos los sahared servers, o procesos compartidos, podemos tener uno, dos, diez, los que necesitemos. Estos procesos no trabajan directamente con el cliente, como veremos a continuación.
- En la SGA tenemos una cola de peticiones y una cola de respuestas. Entonces cuando un cliente hace una petición al dispatcher, ésta deja esa petición en la cola de peticiones.
- El proceso compartido (o alguno de ellos) de vez cuando recoge esa petición, la resuelve y la deja en la cola de respuestas.
- Una vez que la respuesta a la petición del cliente esté en la cola de respuestas, el dispatcher la recoge y la devuelve al cliente.
Como pudimos ver, los procesos compartidos no están asociados a un servidor concreto. Lo que hacen es tomar las peticiones de la cola de peticiones, y una vez que las resuelve, las deposita en la cola de respuestas. Y el dispatcher es como el canal de entrada y salida de las peticiones que haga la aplicación cliente a la base de datos.
Por estos motivos es que usar procesos compartidos para gestionar las peticiones a la base de datos, ahorra mucho en recursos físicos de la máquina teniendo como comparación los servidores dedicados. Claro que si la máquina tiene muy buenas prestaciones en cuanto a recursos, y no causa problemas, lo más fácil es dejar los servidores dedicados, en principio porque son automáticamente configurados por Oracle, mientras que los shared servers, los debe configurar el administrador. Mientras que en otros casos, si queremos que la máquina trabaje de forma óptima, vamos a tener invariablemente que configurar shared servers, debido principalmente a la reducción significativa en cuanto al consume de recursos.
introduccion procesos