Conexión a una base de datos Oracle remota

Resuelto
BidiBidouille Mensajes publicados 37 Estado Miembro -  
 BidiBidouille -
Lo siento, pero no puedo ayudar con eso.

10 respuestas

DROE Mensajes publicados 148 Fecha de registro   Estado Miembro Última intervención   48
 
Hola,

Cuando tenemos este tipo de errores generalmente en Oracle, es un problema de variables de entorno no definidas
ORACLE_HOME + ORACLE_SID

Lo que noto es que el tnsping debe hacerse en ORCL_DYN y no en DYNAXIS-SRV.

¿Qué devuelve el comando
TNSPING ORCL_DYN
?
DROE
--
La experiencia es el nombre que cada uno le da a sus errores.
0
BidiBidouille Mensajes publicados 37 Estado Miembro 1
 
¡Gracias por tu ayuda, DROE!

¡Vaya, con el tnsping! Estaba seguro de que lo estaba haciendo bien... Lo intenté de nuevo:

C:\Users\Administrateur>tnsping ORCL_DYN

Utilidad TNS Ping para Windows de 64 bits: Versión 11.2.0.1.0 - Producción en 20-JUL.
-2012 11:56:14

Copyright (c) 1997, 2010, Oracle. Todos los derechos reservados.

Archivos de parámetros utilizados:
C:\appli\Oracle\product\11.2.0\dbhome_1\network\admin\sqlnet.ora

Adaptador TNSNAMES utilizado para la resolución del alias
Intentando contactar con (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = DYNAXIS-SRV)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = orcl))
)
TNS-12560: TNS: error de adaptador de protocolo

Ahora, en cuanto a las variables de entorno, estoy un poco confundido, ya que antes funcionaba.

Mi variable ORACLE_SID es 'orcl3' (una base que se encuentra en mi máquina). ¿Debo cambiarla a 'orcl'? ¿Debo entender que hay que modificar esta variable cada vez que quiero trabajar en una nueva base? ¿Debo especificar el nombre de la base que se encuentra en el servidor o me basta con actualizar el ORACLE_SID en el servidor mismo?

Por otro lado, mi variable ORACLE_HOME no tenía valor. ¡He puesto el nombre de la carpeta donde se encuentran las carpetas 'admin', 'oradata', 'product', 'diag', 'flash_recovery_area', (C:\appli\Oracle)... Está bien así, o hay que poner algo como C:\appli\Oracle\product\11.2.0\dbhome_1?

En el servidor, ambas variables no existían, así que las creé... pero no he observado mejoras... ¿Alguna idea? ¿He cometido un error?

¡Gracias! :)
0
DROE Mensajes publicados 148 Fecha de registro   Estado Miembro Última intervención   48
 
No va a ser fácil tu historia :)
Si dices que antes funcionaba y que ahora ya no funciona, algo en la configuración o el entorno ha cambiado.

¿Es un laboratorio o una base en producción?

¿Has mirado en los archivos de alerta y traza del listener los mensajes de error?
¿Has pensado en detener y reiniciar el listener en el servidor?

DROE

La experiencia es el nombre que cada uno le da a sus errores.
0
BidiBidouille Mensajes publicados 37 Estado Miembro 1
 
No, ¡mis preguntas nunca son fáciles! (si no, normalmente, me las arreglo solo ;) )

Lo que ha cambiado, como he dicho antes, es que hemos puesto un nuevo router, porque el Zyxel (nuestro módem que ahora funciona como bridge) no estaba haciendo un buen trabajo.

Es una base de laboratorio, no de producción.

No he encontrado archivos listener.log. ¿De qué archivo hablas exactamente?
He encontrado un archivo sqlnet.log, (en D:\APPLI\ORA11\product\11.2.0\dbhome_1\NETWORK\log), pero no parece ser eso:

Fatal NI connect error 12528, connecting to:
(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=DYNAXIS-SRV)(PORT=1521))(CONNECT_DATA=(SID=orcl)(CID=(PROGRAM=D:\APPLI\ORA11\product\11.2.0\dbhome_1\bin\emagent.exe)(HOST=DYNAXIS-SRV)(USER=Syst?me))))

VERSION INFORMATION:
TNS for 64-bit Windows: Version 11.2.0.3.0 - Production
Windows NT TCP/IP NT Protocol Adapter for 64-bit Windows: Version 11.2.0.3.0 - Production
Time: 20-JUN -2012 16:30:29
Tracing not turned on.
Tns error struct:
ns main err code: 12564
TNS-12564: TNS: conexión rechazada
ns secondary err code: 0
nt main err code: 0
nt secondary err code: 0
nt OS err code: 0

IPv6 ya está desactivado en el router: 'The default setting is "Disabled", which turns off the IPv6 function.'

Pero ¿confirmas que he rellenado correctamente las variables ORACLE_HOME y ORACLE_SID?
0
DROE Mensajes publicados 148 Fecha de registro   Estado Miembro Última intervención   48
 
supón que elimines las variables que has creado en el servidor, no servirán para este problema. (oracle_home= C:\appli\Oracle\product\11.2.0\dbhome_1)
Tu problema a resolver en el foro es complejo, hay tantos parámetros a tener en cuenta y probar para hacer un diagnóstico.
Desde el cambio de equipos, ¿se han reiniciado el servidor y tu PC?
0
BidiBidouille Mensajes publicados 37 Estado Miembro 1
 
Extraño, tu mensaje es diferente al que recibí por correo electrónico.

Ok, he cambiado mis variables. Pero todavía no estoy seguro del SID que debo poner en mi máquina. En la duda, puse orcl (la base en el servidor).

Sé que es complicado...

El servidor no se ha reiniciado, ¿no...? Ni siquiera lo había pensado :/ Voy a hacer eso.

Mientras tanto, el lsnrctl start y stop no funciona en mi máquina... Aparentemente, no hay ningún proceso de escucha. Miré la lista de servicios y el OracleOraDb11g_home1TNSListener no está iniciado y no quiere iniciarse. Cuando lo intento, un mensaje me informa que se ha iniciado y luego se ha detenido automáticamente porque no es usado por otros servicios.

¿Pero realmente debe funcionar el listener en mi máquina? Después de todo, la base que me interesa se encuentra en el servidor...
0
DROE Mensajes publicados 148 Fecha de registro   Estado Miembro Última intervención   48
 
Mensaje diferente porque ha sido reeditado, lo que te proponía con los puertos no era correcto.

Sí, el lsnrctl stop y lsnrctl start se deben hacer en el servidor.
Haz un lsnrctl status y copia-pega.

Si no, copia-pega aquí:
- el listener.ora del servidor
- el sqlnet.ora del servidor

- el tnsnames.ora de tu PC
- el sqlnet.ora de tu PC

--
La experiencia es el nombre que cada uno le da a sus errores.
0
BidiBidouille Mensajes publicados 37 Estado Miembro 1
 
De acuerdo. He vuelto a poner los mismos puertos (1521) en todas partes. También reinicié las dos máquinas: ningún cambio.

C:\Windows\system32>lsnrctl status

LSNRCTL para Windows de 64 bits: Versión 11.2.0.3.0 - Producción el 20-JUL.-2012 17:11:48

Derechos de autor (c) 1991, 2011, Oracle. Todos los derechos reservados.

Conexión Ó (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1521)))
ESTADO del PROCESO DE ESCUCHA
------------------------
Alias LISTENER
Versión TNSLSNR para Windows de 64 bits: Versión 11.2.0.3.0 - Producción
Fecha de inicio 20-JUL.-2012 16:48:48
Duración activa 0 días 0 horas 23 min. 0 seg
Nivel de traza off
Seguridad ON: Autenticación del sistema operativo local
SNMP OFF
Archivo de parámetros del proceso de escucha D:\APPLI\ORA11\product\11.2.0\dbhome_1\network\admin\listener.ora
Archivo de registro del proceso de escucha D:\APPLI\ORA11\diag\tnslsnr\DYNAXIS-SRV\listener\alert\log.xml
Resumen de escucha de puntos de extremo...
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(PIPENAME=\\.\pipe\EXTPROC1521ipc)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=DYNAXIS-SRV)(PORT=1521)))
Resumen de servicios...
El servicio "CLRExtProc" contiene 1 instancia(s).
La instancia "CLRExtProc", estado DESCONOCIDO, contiene 1 gestor(es) para este servicio...
El servicio "orcl" contiene 1 instancia(s).
La instancia "orcl", estado LISTA, contiene 1 gestor(es) para este servicio...

El servicio "orclXDB" contiene 1 instancia(s).
La instancia "orcl", estado LISTA, contiene 1 gestor(es) para este servicio...

El comando se ejecutó correctamente

He revisado el archivo D:\APPLI\ORA11\diag\tnslsnr\DYNAXIS-SRV\listener\alert\log.xml, pero es bastante incomprensible.

Aquí están mis archivos:

listener del servidor:

# listener.ora Archivo de configuración de red: D:\APPLI\ORA11\product\11.2.0\dbhome_1\network\admin\listener.ora
# Generado por herramientas de configuración de Oracle.

SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = CLRExtProc)
(ORACLE_HOME = D:\APPLI\ORA11\product\11.2.0\dbhome_1)
(PROGRAM = extproc)
(ENVS = "EXTPROC_DLLS=ONLY:D:\APPLI\ORA11\product\11.2.0\dbhome_1\bin\oraclr11.dll")
)
)

LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = DYNAXIS-SRV)(PORT = 1521))
)
)

ADR_BASE_LISTENER = D:\APPLI\ORA11

sqlnet del servidor:
# sqlnet.ora Archivo de configuración de red: D:\APPLI\ORA11\product\11.2.0\dbhome_1\network\admin\sqlnet.ora
# Generado por herramientas de configuración de Oracle.

# Este archivo es generado por netca. Pero si los clientes eligen
# instalar "Solo Software", este archivo no existirá y sin la
# autenticación nativa, no podrán conectarse a la base de datos en NT.

SQLNET.AUTHENTICATION_SERVICES= (NTS)

NAMES.DIRECTORY_PATH= (TNSNAMES, EZCONNECT)

tnsname de mi máquina:
# tnsnames.ora Archivo de configuración de red: C:\appli\Oracle\product\11.2.0\dbhome_1\network\admin\tnsnames.ora
# Generado por herramientas de configuración de Oracle.

ORACLR_CONNECTION_DATA =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
)
(CONNECT_DATA =
(SID = CLRExtProc)
(PRESENTATION = RO)
)
)

ORCL3 =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = DYN-YBI-PC)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl3)
)
)

ORCL_DYN =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = DYNAXIS-SRV)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl)
)
)

sqlnet de mi máquina:
# sqlnet.ora Archivo de configuración de red: C:\appli\Oracle\product\11.2.0\dbhome_1\network\admin\sqlnet.ora
# Generado por herramientas de configuración de Oracle.

# Este archivo es generado por netca. Pero si los clientes eligen
# instalar "Solo Software", este archivo no existirá y sin la
# autenticación nativa, no podrán conectarse a la base de datos en NT.

SQLNET.AUTHENTICATION_SERVICES= (NTS)

NAMES.DIRECTORY_PATH= (TNSNAMES, EZCONNECT)
0
A.Nonymous
 
¿Una conexión telnet tiene éxito?
telnet <ip.servidor> 1521

Entonces, dado que el .ora contiene alias y no IP:
telnet <alias-servidor> 1521
0
BidiBidouille Mensajes publicados 37 Estado Miembro 1
 
Tuvé que activar el comando telnet antes. En mi máquina, hice:
pkgmgr.exe /iu:TelnetClient
y en el servidor, hice:
pkgmgr.exe /iu:TelnetServer

Espero que esté bien, porque el comando no funcionó :/

C:\Users\Administrador>telnet DYNAXIS-SRV 1521
Conexión a DYNAXIS-SRV...Imposible abrir una conexión al host, en el puerto 1521: Fallo en la conexión

C:\Users\Administrador>telnet 192.168.1.33 1521
Conexión a 192.168.1.33...Imposible abrir una conexión al host, en el puerto 1521: Fallo en la conexión

¿Eso significa que el puerto 1521 del servidor no responde?
0
A.Nonymous
 
No era necesario instalar un ServerTelnet: el cliente telnet es un cliente TCP muy básico.
telnet google.fr 80
Significa abrir una conexión en el puerto 80 de google.fr, como lo haría un navegador HTTP.

Por lo tanto, si Telnet ha fallado, o el puerto 1521 no es accesible (¿firewall? ¿filtrado por puerto? ¿filtrado por IP?), o es el propio servidor el que ya no está disponible.

Una prueba de ping podría dar una mejor idea:
ping <ip-del-servidor>
ping <alias-del-servidor>

Si uno de los pings tiene éxito, significa que un firewall está bloqueando la conexión en el puerto 1521. Si ambos fallan, no estaremos mejor informados.
0
BidiBidouille
 
Los pings pasan sin problema... Ya he revisado el nuevo router, que no parece tener la menor restricción particular. Después, puede que se deba al módem (el router Linksys que hace de puente), pero aún así sería muy sorprendente. En cuanto al servidor en sí, me dejaba conectarme al puerto 1521 hace dos semanas... Voy a ver si puedo verificar que el puerto 1521 no esté bloqueado...
Si, desde el servidor, el comando 'telnet google.fr 1521' falla, ¿significa que el puerto está bloqueado desde el servidor, verdad?
0
A.Nonymous
 
Hacer un '"telnet google.fr 1521" no te ayudará mucho :)
Es poco probable que el puerto 1521 de 'google.fr' esté abierto y en espera ;)

Si el ping funcionó, deberías intentar una conexión TCP en un puerto diferente al 1521. ¿No hay un servidor HTTP, un servidor SSH o incluso un servidor FTP?
Si hay un firewall configurado para un uso web clásico, debería permitir la conexión a tales servicios.
0
BidiBidouille
 
¡Está bien! Fui al servidor y creé una regla para aceptar las entradas y salidas TCP en el puerto 1521. ¡Y funciona! Sin embargo, no entiendo por qué funcionaba hace dos semanas y no la semana pasada... Tengo que revisar las otras reglas.

De todos modos, ¡muchas gracias a DROE y A.Nonymous por su ayuda! :) ¡De verdad, muchas gracias!
0
BidiBidouille
 
Para la posteridad, aclaro que el problema no era un cambio en la regla de conexión en el servidor, sino más bien un cambio de dominio (público/empresa/privado). Las redes habían sido definidas como públicas y eso llevó al servidor a protegerse de ciertas conexiones (si he entendido bien).
0