Alejandro Trujillo, Información y Tecnologías Ecuador

Oracle, Microsoft, Administración, y algo más

Sesiones de Usuario con Oracle Shared Servers

Shared Server es un mecanismo que permite establecer sesiones de usuario contra el Servidor de una manera mucho más efectiva para el rendimiento de la base de datos. En este artículos vamos a ver como Oracle administra las sesiones de usuario con si tiene configurado Shared Server

Primero hay que definir los nuevos componentes que utiliza esta arquitectura: La instancia tiene dos nuevos procesos: Shared Servers y Dispatchers que son lanzados cuando se inicia la instancia. Además hay otras dos nuevas estructuras de memoria: Common Queue y Response Queue

  • Los Shared Servers son procesos que reciben las sentencias SQL directamente desde el procesos de usuario (User Process). Compilan el código, ejecutan y generan un set de resultados para las sentencias SQL recibidas
  • Los Dispatchers son procesos TCP que se ejecutan en un único puerto TCP. Se contanctan con el Listener y lo registran de tal manera que sirve como un medio para transmitir las peticiones de usuario al Common Queue
  • El Common Queue es una estructura de memoria localizada en el SGA que almacena todas las peticiones de usuario que pasan por los dispatcher y que están a la espera de ser procesados por los Shared Servers
  • El Response Queue es otra estructura de memoria localizada en el SGA que almacena el set de resultados procesado por los procesos Shared Servers y que esperan ser dirigidos al proceso de usuario que realizó la petición, mediante su Dispatcher

Hay que entender que en este tipo de arquitectura el listener funciona diferente: Cuando llega una nueva petición de conexión, el listener no dispara un proceso de servidor dedicado (Server Dedicated Process) sino que, mediante un listado de todos los dispatchers disponibles para cada servicio junto al número de conexiones concurrentes para cada dispatcher, el listener enruta la petición de conexión al dispatcher con la menor carga. De esta manera el usuario se mantiene conectado al mismo dispatcher durante toda la sesión.

Ahora vamos a ver como es el proceso como tal:

  1. El user process redirecciona la petición de conexión hacia su dispatcher
  2. El dispatcher posiciona la petición en el Common Queue del SGA (Las peticiones son procesadas en base FIFO)
  3. El próximo Shared Server disponible toma la petición del Common Queue y la procesa
  4. Después de procesar, el Shared Server llama al Response Queue del Dispatcher con el que está conectado la sesión,  toma el set de resultados y lo envía al a dicho Response Queue
  5. El Dispatcher toma el set de resultados desde su respectivo Response Queue
  6. El Dispatcher envía el resultado al User Process

Hay que tener en cuenta ciertas consideraciones:

  • El Common Queue es compartido por todos los Dispatchers
  • Cada Dispatcher tiene su propio Response Queue
  • Los Shared Process están monitoreando contínuamente el Common Queue en busca de nuevas peticiones
  • Las estructuras de memoria almacenadas en el PGA en la arquitectura dedicada es ahora almacenada en el SGA

octubre 29, 2008 Posted by | Oracle | , , , , | 1 comentario