Procesos dedicados
Para realizar las operativas de este video vamos a necesitar cuatro terminales de Linux y estaremos trabajando indistintamente con ellas.
Lo primero que vamos a hacer es conectarnos a la base de datos con el usuario sysdba, y una vez conectados, vamos a arrancar la base de datos. Entonces vamos a la primera de estas terminales y vamos a indicar el entorno con:
- oraenv
Le indicamos el ORACLE_SID que es:
- orcl
Y ahora si podemos ejecutar el sqlplus, y al presionar Intro, me pide e nombre de usuario, entonces tecleamos:
- sys as sysdba
- le pasamos la contraseña
Ya estamos conectados a la instancia de Oracle a través del usuario sysdba, que es un usuario con todos los permisos y desde el cual se puede arrancar la base de datos. Para ello escribimos:
- startup
Y debemos esperar unos segundos antes que nos indiquen que la base de datos está montada. Ya sabemos que en cuanto se conecta un usuario, a través de una aplicación cliente, en este caso sqlplus, se crea un proceso dedicado para este usuario.
Vayamos entonces a otra terminal y tecleemos el siguiente comando:
- ps -ef | grep LOCAL
Y aquí tenemos el proceso dedicado que se crea para atender las peticiones de este usuario que recién conectamos. Aquí podemos ver que el proceso se llama ORACLAORCL que se identifica como LOCAL, y se conecta a través del protocolo beq.
Habiamos visto también en el video anterior que por cada usuario que se conecte, pues se creará un proceso dedicado para él. Entonces vamos a conectar más usuarios a la base de datos, y entonces deberíamos tener tantos procesos dedicados como usuarios estén conectados a la base de datos. Pero primero vamos a esta terminal de acá, donde nos conectamos con el usuario sysdba, y vamos a listar los nombres de los usuarios que tenemos ahora mismo en la base de datos
Para ello escribimos:
- SELECT USERNAME FROM ALL_USERS
Presionamos Intro y se nos muestran los usuarios que hemos creado para la base de datos, vamos a tomar cualquiera de ellos, por ejemplo, este de acá, SAXO y vamos a otro terminal de Linux que tenemos abierto y vamos a conectarnos a la base de datos, ahora también con el usuario SAXO.
Como hicimos antes cuando nos conectamos con el usuario sysdba, acá también tenemos que definir el entorno, conectarnos al sqlplus, y por último, nos pide un nombre de usuario:
Pues escribimos SAXO, al presionar Intro, nos pide ahora la contraseña de este usuario, que debemos conocerla de antemano. Tecleamos dicha contraseña, presionamos Intro, y se nos muestra un mensaje indicando que nos hemos conectado a la base de datos con el usuario SAXO.
Teniendo en cuanta lo visto en el video anterior, en teoría debemos tener ahora dos servidores dedicados, trabajando con cada uno de los usuarios que tenemos conectados a la base de datos, el usuario sysdba, y el usuario SAXO.
Vamos a verlo entonces. Volvemos a esta terminal de acá, y debemos escribir el comando:
- ps -ef | grep LOCAL
Y podemos ver que ahora tenemos dos procesos dedicados, atendiendo a un usuario cada uno. Lo mismo si nos conectamos con otro usuario, o con veinte, va a haber tantos procesos dedicados como usuarios conectados.
Vamos a establecer otra conexión, sólo para observar cómo se crea también un nuevo proceso dedicado. En este caso utilizaremos otra terminal de Linux, y vamos a establecer una nueva conexión desde el mismo usuario SAXO.
Ahora tenemos una nueva conexión con el usuario SAXO. Entonces vamos a comprobar que efectivamente se ha creado otro proceso dedicado, debemos tener tres de ellos ahora.
Vayamos de vuelta a la terminal donde estamos mostrando los procesos, con las teclas de dirección de arriba y abajo hacemos que aparezca el comando escrito anteriormente, y cuando presionamos Intro, vemos que tenemos ahora 3 servidores dedicados, justo como habiamos explicado en el video anterior. También tenemos otras maneras de observar estos procesos y al usuario que están haciendo uso de ellos. Una de ellas es a través de la vista V$SESSION.
Vamos a la terminal donde establecimos la conexión con el usuario sysdba, ya que estas vistas solo son accesibles desde un usuario con permisos de administración. Y ahora, vamos a mostrar los campos USERNAME Y SERVER de la vista V$SESSION para el usuario SAXO:
- SELECT USERNAME, SERVER FROM V$SESSION WHERE USERNAME=[SAXO]
Y Oracle nos devuelve una tabla donde tenemos dos conexiones abiertas del usuario SAXO, y en ambos casos el servidor es de tipo dedicado. Por otra parte tampoco es que podamos hacer otra cosa, porque en este momento no tenemos aún procesos de tipo SHARED.
También podemos ver en esta vista, a través de que aplicación cliente se ha conectado el usuario, que ya sabemos que ambas conexiones las realizamos a través del sqlplus. Vamos a comprobarlo.
Para eso debemos pedirle el campo PROGRAM en la consulta anterior:
- SELECT USERNAME, PROGRAM FROM V$SESSION WHERE USERNAME=[SAXO]
Y podemos ver que ambas conexiones del usuario SAXO, han sido a través del sqlplus. Entonces, sino hemos configurado otro tipo de procesos, como pueden ser procesos de tipo SHARED, las conexiones en Oracle van a ser a través de procesos dedicados. Estos procesos se crean cuando se conecta un nuevo usuario y vamos a tener cuantas conexiones según usuarios tengamos.
De igual manera, a la vez que se cierra una conexión, también se cierra el proceso dedicado correspondiente. En nuestro caso, tenemos ahora mismo tres conexiones activas con la base de datos, si cerramos alguna de ellas, entonces deberíamos tener solo dos procesos dedicados.
Si desconectamos por ejemplo, una de las sesiones del usuario SAXO, y visualizamos los procesos que tenemos abiertos actualmente, podemos ver que tenemos ahora dos procesos dedicados, ya que tenemos solo dos usuarios conectados a la base de datos. Justo arriba se nos muestran las tres conexiones que teníamos antes de desconectar una de las sesiones del usuario SAXO.
procesos dedicados