Archive for abril, 2010
Url de conexión JDBC a Oracle RAC
Recientemente uno de nuestros entornos ha migrado a Oracle RAC y hemos tenido el problemilla que os detallo a continuación.
Parece ser que en Oracle RAC la URL de conexión a la BBDD mediante JDBC no permite una de sus versiones clásicas. Así por ejemplo una conexión del estilo:
jdbc:oracle:thin:@<HOST>:1521:<SID>
no funciona saltando la siguiente excepción:
java.sql.SQLException: Listener refused the connection with the following error:
ORA-12505, TNS:listener does not currently know of SID given in connect descriptor
The Connection descriptor used by the client was:
...
Para solucionarlo podemos utilizar la otra forma corta de url que aparece por ejemplo en este listado de formatos de conexión JDBC (en inglés ):
jdbc:oracle:thin:@//<HOST>:1521/<SID>
También podemos utilizar una URL en formato largo:
jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=<HOST>(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=<SID>)))
Si tenemos varios servidores deberíamos poner una URL en el siguiente formato:
jdbc:oracle:thin:@<HOST1>^<HOST2>:1521:<SID>
jdbc:oracle:thin:@(DESCRIPTION=(LOAD_BALANCE=on)
(ADDRESS=(PROTOCOL=TCP)(HOST=<HOST1>) (PORT=1521))
(ADDRESS=(PROTOCOL=TCP)(HOST=<HOST2>) (PORT=1521))
(CONNECT_DATA=(SERVICE_NAME=<SID>)))
aunque esto último no lo he podrido probar lo he visto en el JUG de Padova (en inglés ).
Espero que le pueda servir de ayuda a alguien.
Comentarios recientes