Está en la página 1de 6

Oracle y los Firewalls

Fecha de creacin: lunes 22 de Noviembre de 2005. Versin: 1.0. Pruebas realizadas en Oracle8i Release 3 sobre Windows XP Professional 32 bits.

Este documento ha sido elaborado por Infor Consult Soluciones, SL (http://www.inforconsult.com.es). Queda prohibida la edicin o modificacin de este documento sin permiso de su autor. Se permite, sin embargo, imprimir y ceder este documento a terceros siempre que el contenido se mantenga ntegro y se haga mencin expresa a su autor.

LA PAPELERA DE RECICLAJE DE ORACLE

INDICE
ORACLE Y LOS FIREWALLS Descripcin del proceso de conexin Posibles soluciones Errores relacionados Notas de Metalink 3 3 4 6 6

Pgina 2 de 6

LA PAPELERA DE RECICLAJE DE ORACLE

ORACLE Y LOS FIREWALLS


Descripcin del proceso de conexin
En las mquinas Windows el proceso de conexin se realiza del siguiente modo para el protocolo TCP/IP: 1. El proceso de usuario realiza una peticin de conexin al servidor. El proceso de usuario es la herramienta del cliente, SQL*Plus por ejemplo. La direccin del servidor y el puerto de escucha del listener (normalmente 1521) la suele coger el cliente del fichero tnsnames.ora (depende de la configuracin). Cuando el listener recibe la peticin crea un proceso servidor dedicado en el lado del servidor que se queda a la escucha en un puerto libre cogido al azar. El listener devuelve los datos de conexin del nuevo proceso al proceso de usuario. El proceso de usuario lanza otra peticin diferente al puerto que le ha indicado el listener. Cuando el proceso servidor recibe la peticin se establece la conexin y si los datos de usuario y password son correctos se abre la sesin en la base de datos.

2.

3. 4.

Cuando existe un firewall entre el cliente y el servidor, los administradores de sistemas normalmente cometen el error de abrir solamente el 1521 pensando que toda la conexin va solamente por ese puerto, y como acabamos de ver no es as. En este caso, los pasos 1, 2 y 3 anteriores van bien pero el paso 4 falla porque el firewall corta la peticin, como se puede ver en la siguiente figura. Los pasos 1, 2 y 3 estn pintados en rojo, naranja y azul respectivamente. El paso 4, en verde, no puede pasar a travs del firewall: Firewall abierto en el puerto 1521

Proceso servidor Proceso servidor Proceso servidor

Liste ner

SQL*Plu s

Pgina 3 de 6

LA PAPELERA DE RECICLAJE DE ORACLE

Posibles soluciones
Para solucionar este problema existen diferentes soluciones: 1. Usar un firewall que lleve implementado un proxy SQL*Net. En este caso, el firewall abre un servicio en un puerto configurable (normalmente el 1610) y este servicio reconecta con el listener en el puerto y en la direccin IP que se indique. Cuando el cliente recibe la nueva direccin del proceso servidor, este reconecta de nuevo con el servicio del firewall y este a su vez redirecciona la conexin al nuevo proceso. De esta forma todo se hace a travs de un nico puerto. Usar el parmetro USE_SHARED_SOCKET=TRUE en el registro de Windows en el servidor bajo la clave: \\HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE (Oracle 8.0) \\HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\HOME<#> (Oracle 8.1.7.x.x o superior) Es necesario reiniciar el servidor. Con shared sockets tanto los procesos servidores dedicados como el propio proceso de escucha listener usan el mismo puerto (el indicado en el fichero listener.ora del servidor). Las consecuencias de esto son dos: Si paramos el listener las sesiones abiertas se desconectan inmediatamente porque es el listener quien gestiona esas conexiones. Si la actividad de conexin / desconexin es muy alta puede producir cierto colapso (esperas). 3. Usar Oracle Connection Manager. Se trata de un software que hace lo mismo que el firewall con SQL*Net implementado que se describi en la primera opcin. Este software se coloca detrs del Firewall y escucha en un puerto (normalmente el 1610). Por tanto, habra que abrir ese puerto en el firewall y se podra cerrar el 1521. En la conexin que abre el cliente hacia el Connection Manager se le indica el servidor y puerto de escucha del listener al que tiene que redirigir la peticin. Por tanto, Connection Manager acta como un gateway o un router dado que tambin puede rechazar conexiones dependiendo de las IPs de originen o destino. En el siguiente dibujo se puede observar este comportamiento:

2.

Pgina 4 de 6

LA PAPELERA DE RECICLAJE DE ORACLE

Proceso servidor Proceso servidor Proceso servidor

Firewall abierto en el puerto 1521

Liste ner

OC s

SQL*Plu

4.

configurar el cliente se tiene que configurar el tnsnames.ora como se indica:

EJEMPLO_CMAN= (DESCRIPTION= (ADDRESS_LIST= (ADDRESS= (PROTOCOL=TCP) (HOST=SERVIDOR_CON_CMAN) Direccin de OCM (PORT=1610) ) (ADDRESS= (PROTOCOL=TCP) (HOST=SERVIDOR_BBDD) Direccin de Listener (PORT=1521) ) ) (CONNECT_DATA= (SID=ORCL)) Para usar OCM (SOURCE_ROUTE=YES) ) La configuracin del Connection Manager en el servidor (se suele usar el mismo servidor que el de la BD) se hace modificando el fichero cman.ora en ORACLE_HOME\network\ admin: CMAN= (ADDRESS_LIST= (ADDRESS= (PROTOCOL=TCP) (HOST=IP del servidor con OCM) (PORT=1610) ) ) MAN_RULES= (RULE_LIST= (RULE= (SRC = IP del cliente) (DST = IP del servidor de BD) (SRV = servicio de BD)

Pgina 5 de 6

LA PAPELERA DE RECICLAJE DE ORACLE

(ACT = accept | reject) ) ) Una vez configurado, hay que levantar el servicio de OCM. Se puede hacer desde el Gestor de Servicios de Windows y desde la lnea de comandos mediante: CMTCTL START CM. Para pararlos se puede proceder de forma anloga mediante el comando CMCTL STOP CM. Para saber si el OCM est activo: CMCTL STATUS y para saber la versin: CMCTL VERSION.

Errores relacionados
ORA-12203: TNS:unable to connect to destination. ORA-12537: TNS:connection closed. ORA-12535: TNS:operation timed out.

Notas de Metalink
Note 45226.1 SQL*Net and Firewalls. Note:66382.1 Firewalls, Windows NT and Redirections. Note:119706.1 Troubleshooting Guide TNS-12535 & ORA-12535 Errors. Note:2077721.6 Installation and Configuration of Net8 Connection Manager (CMAN). Note:298916.1 A Guide to 10G CMAN configuration.

Pgina 6 de 6

También podría gustarte