Tengo una aplicación Java que usa JDBC (a través de JPA) que se conectaba a una base de datos de desarrollo usando hostname, puerto y Oracle SID, como este:
jdbc: oracle: thin: @ oracle.hostserver1.mydomain.ca: 1521: XYZ
XYZ fue el Oracle SID. Ahora necesito conectarme a una base de datos Oracle diferente que no usa un SID, sino que usa un "Nombre de servicio" de Oracle.
Intenté esto pero no funciona:
jdbc: oracle: thin: @ oracle.hostserver2.mydomain.ca: 1522: ABCD
ABCD es el nombre del servicio de la otra base de datos.
¿Qué estoy haciendo mal?
fuente
jdbc:oracle:thin:USER/PWD@//my.ip.address:1521/SERVICENAME
ojdbc:oracle:thin:@//my.ip.address.1521/SERVICENAME
, con nombre de usuario y contraseña como argumentos parajdbc.getConnection()
. Aún desconcertante.Entonces, hay dos formas fáciles de hacer que esto funcione. La solución publicada por Bert F funciona bien si no necesita suministrar ninguna otra propiedad especial de conexión específica de Oracle. El formato para eso es:
Sin embargo, si necesita proporcionar otras propiedades de conexión específicas de Oracle, debe usar el estilo TNSNAMES largo. Tuve que hacer esto recientemente para habilitar las conexiones compartidas de Oracle (donde el servidor hace su propia agrupación de conexiones). El formato TNS es:
Si está familiarizado con el formato de archivo Oracle TNSNAMES, entonces esto debería serle familiar. Si no es así, solo busca en Google los detalles.
fuente
También puede especificar el nombre de TNS en la URL de JDBC como se muestra a continuación
fuente
Prueba esto:
jdbc:oracle:thin:@oracle.hostserver2.mydomain.ca:1522/ABCD
Editar: por comentario a continuación, esto es realmente correcto:
jdbc:oracle:thin:@//oracle.hostserver2.mydomain.ca:1522/ABCD
(tenga en cuenta el//
)Aquí hay un enlace a un artículo útil
fuente
jdbc:oracle:thin:@//oracle.hostserver2.mydomain.ca:1522/ABCD
.oracle.hostserver2.mydomain.ca
?Esta discusión me ayudó a resolver el problema con el que estuve luchando durante días. Miré a mi alrededor en Internet hasta que encontré la respuesta de Jim Tough el 18 de mayo del 11 a las 15:17. Con esa respuesta pude conectarme. Ahora quiero retribuir y ayudar a otros con un ejemplo completo. Aquí va:
fuente
En caso de que esté utilizando eclipse para conectar Oracle sin SID. Hay dos controladores para seleccionar, es decir, Oracle thin driver y otro es otro controlador. Seleccione otros controladores e ingrese el nombre del servicio en la columna de la base de datos. Ahora puede conectarse directamente usando el nombre del servicio sin SID.
fuente
Cuando se usa en
dag
lugar dethin
, la sintaxis a continuación que apunta al nombre del servicio funcionó para mí. Lasjdbc:thin
soluciones anteriores no funcionaron.fuente
Esto debería estar funcionando:
jdbc:oracle:thin//hostname:Port/ServiceName=SERVICE_NAME
fuente