miércoles, 3 de octubre de 2012

Pentaho SPOON: JDBC error al conectar con Oracle

Con la versión 4.3.0 del Spoon-Kettle de Pentaho, al crear una nueva conexión de base de datos y después de introducir los parámetros oportunos, se puede producir un error en la conexión de la base de datos. Uno de los posibles errores puede ser causado por intenta usar un driver JDBC que no está instalado.


Exception while loading class
oracle.jdbc.driver.OracleDriver

La solución es fácil, sólo se requiere instalar los drivers correspondientes, para ello podemos seguir los siguientes pasos:

  • Determinaremos con el siguiente código la versión de Oracle. Para ello podemos utilizar cualquier herramienta que tenga acceso a Oracle (SQL*PLus, SQL Developer, Toad, etc.).
SELECT banner
  FROM v$version
 WHERE lower(banner) like '%oracle%';
La salida anterior podría mostrar un resultado parecido a este:
"Oracle Database 11g Express Edition Release 11.2.0.2.0 - Production"
  • Ahora debemos saber qué JDK estamos usando. Podemos ejecutar el comando siguiente en una ventana de sistema.
 java -version
La salida anterior podría mostrar un resultado parecido a este:
"java verison 1.6.0_24..."
  • Siguiente paso es descargar el driver JDBC correspondiente a la versión de Oracle y al JDK que estamos usando. Para ello:
    • Accederemos a la web de Oracle para descargarlo.
    • Localizaremos la sección de "Drivers" y seleccionaremos JDBC drivers.
    • En la siguiente ventana nos mostrará los diferentes drivers según la versión de Oracle. Localizaremos por ejemplo la 11.0.2.2.
    • En la nueva ventana, demos descargar los archivos del driver y el soporte de idioma. En nuestro caso descargaremos:
      • ojdbc6.jar      Clase para usar con JDK 1.6.
      • orai18n.jar     Clase NLS para usar con JDK 1.5 y 1.6.
  • Por último debemos copiar los dos archivos descargados anteriormente en el directorio de los drivers que usa Spoon.
 ....\libext\JDBC
Con estos pasos ya se puede configurar una conexión a una base de datos Oracle sin ningún problema.