Configurando servidores compartidos 2
Primero que todo vamos a comprobar el número de servidores compartidos que tenemos ahora mismo en la base de datos, y también la cantidad de dispatchers. Esta vez usaremos un par de vistas donde tenemos muchisima información de estos procesos, aunque ahora mismo solo mostraremos un par de propiedades de cada uno de ellos.
Claro que también podemos usar las consultas que ya conocemos, SHOW PARAMETER DISPATCHER y SHOW PARAMETER SHARED, pero viene muy bien conocer que además contamos con unas vistas donde tenemos información, incluso más detallada, que la que ofrece estas consultas.
Por ejemplo, la vista V$DISPATCHER, nos muestra todo lo relacionado con estos procesos:
- SELECT NAME, NETWORK FROM V$DISPATCHER
Y podemos ver que solo tenemos un DISPATCHER en la base de datos. Esto lo sabiamos del video anterior, donde también vimos que teníamos ese servidor compartido que se configuró de forma automática por Oracle para atender las peticiones del sqlplus. Aquí tenemos que utiliza el protocolo TCP para su conexión, que el servidor está en el localhost, o sea, es un servidor local, y el número de puerto.
Con esta vista además podemos consultar muchos parámetros y propiedades de los dispatchers, como son el número de BYTES que ha movido, el tiempo que ha estado IDLE, el tiempo que ha estado ocupado, los mensajes que ha enviado, etc.
Pasemos ahora a comprobar el número de servidores compartidos que tenemos disponibles ahora mismo en la base de datos, y vamos a mostrar sólo las propiedades NAME y STATUS de la vista V$SHARED_SERVER:
- SELECT NAME, STATUS FROM V$SHARED_SERVER
Se puede observar que tenemos un solo servidor compartido. Para activar el principio SHARED SERVER en nuestra base de datos, vamos a utilizar el siguiente comando:
- ALTER SYSTEM SET SHARED_SERVERS = 5
Y supongamos que queremos que sean 5 los servidores compartidos. O sea, le estamos indicando el número mínimo de servidores compartidos que tendremos en cuanto arranque la base de datos. Entonces si mostramos nuevamente la vista V$SHARED_SERVER, deberíamos tener 5 servidores compartidos. Vamos a comprobarlo:
- SELECT NAME, STATUS FROM V$SHARED_SERVER
Y podemos ver que efectivamente, ahora tenemos 5 servidores compartidos. Antes teníamos sólo uno, ahora tenemos cinco.
Ahora vamos a configurar los dispatchers. Lo que necesitamos es indicarle a Oracle que queremos uno o varios dispatchers que se hagan cargo de las peticiones que vayan llegando de un determinado servicio cliente. Para ello, usamos el comando:
- ALTER SYSTEM SET DISPATCHERS = [(INDEX=1) (PROTOCOL=TCP) (DISPATCHERS=4) (SERVICE=orcl)]
(INDEX=1) esto significa que como ya tenemos un dispacher que está asociado a un tipo de servicio (orclXDB), y es el único que tenemos todavia, entonces tiene índice cero. Entonces aquí, establecemos que este grupo de dispatchers va a tener el índice uno. O sea, una vez que ejecutemos este comando, vamos a tener dos conjuntos de dispatchers, uno con índice cero, que ya está definido de antes, y cuatro con índice uno, que son precisamente los dispatchers que estamos configurando ahora.
(PROTOCOL=TCP)significa que estos dispatchers queremos que vengan por el protocolo TCP.
(DISPATCHERS=4)aquí le decimos que necesitamos 4 dispatchers con estas características. Entonces unido al que ya tenemos, que tiene un índice diferente y tal, tendríamos 5 en total. La misma cantidad de servidores compartidos que tenemos de antes.
(SERVICE=orcl)con esto le indicamos que estos dispatchers van a hacer caso a las peticiones que lleguen al servicio orcl, que es el propio servicio de la base de datos. Si recordamos, este es el servicio que utilizamos para conectarnos con el listener.
Presionamos Intro: Y Oracle nos muestra el mensaje system altered, indicando que ha habido cambios en la base de datos.
Hagamos ahora un:
- SHOW PARAMETER DISPACHER
Entonces podemos ver lo que decíamos arriba sobre los dos grupos de dispatchers. Tenemos primero un dispatcher que va a hacer caso de las peticiones que lleguen al servicio orclXDB. Y separados por una coma, tenemos otro grupo con los 4 dispatchers que hemos añadido recién, que verán por las peticiones que lleguen al servicio orcl. También se puede comprobar que tenemos 5 dispatchers, uno para orclXDB, y cuatro para el servicio orcl.
Veamos también los parámetros del SHARED:
- SHOW PARAMATER SHARED
Y podemos comprobar que tenemos ahora 5 servidores compartidos, que van a estar disponibles en cuanto se arranque la base de datos, y también estarán activos sin importar cuántas conexiones tengamos en determinado momento.
Ya tenemos configurados los SHARED SERVERS y los DISPACHERS, pero aún queda un paso muy importante por hacer, y es que tenemos que definir la manera en que un cliente entrará a la base de datos mediante un servicio compartido. Esta operación debemos hacerla desde una terminal de Linux, y acceder al archivo tnsnames.ora. Vamos a la ubicación donde tenemos ese fichero:
- cd ORACLE_HOME/network/adminque es donde se encuentran todos los ficheros de red, el listener, el tnsnames, etc.
Si listamos el contenido de este directorio, podemos ver que aquí tenemos el fichero tnsnames.ora, entonces vamos a visualizarlo con vi tnsnames.ora. Al abrir este fichero, tendríamos solo esta configuración de aquí, que ya estaba de antes cuando creamos este archivo tnsnames.ora en videos anteriores, solo le he agregado el argumento SERVER igual a DEDICATED.
Entonces para evitar confusiones, solo hemos copiado esta configuración, y la hemos pegado debajo. Hay que tener mucho cuidado cuando se hace esto, porque si olvidamos copiar uno de estos paréntesis puede ser determinante para que no funcione bien en caso de que queramos acceder a uno de estos servidores de la base de datos.
Claro que hay diferencias que tenemos que definir, por ejemplo aquí tenemos que el tipo de servidor va a ser dedicado, y aquí debajo, el servidor va a ser compartido. Podemos ver que el servicio, la máquina y el puerto si serán los mismos para uno y otro tipo de servidores.
Por supuesto hemos cambiado el nombre, ya que se debe diferenciar también en esto. Aquí podríamos poner cualquier nombre, pero vamos a dejar este mismo ya que es bastante descriptivo del servidor al que vamos a acceder a través de él.
Por ejemplo, según tenemos definido aquí, si el cliente se intenta conectar a través del nombre de servicio ORCLDB va a utilizar servidores dedicados, y en caso de que use el nombre de servicio ORCLDB_SHARED, entonces usará servidores compartidos.
servidores compartidos 2