Buscar en el Blog

viernes, 29 de agosto de 2014

Configuración de Pentaho BI Server 5.1 para Oracle

En ésta publicación explico el procedimiento para configurar los repositorios de metadatos de Pentaho: hibernate, quartz y jackrabbit en la base de datos Oracle

Por defecto, el biserver de Pentaho usa la base de datos HSQLDB, ésta base de datos no es recomendada para instalaciones en producción por lo que es conveniente instalarlo en un motor de base de datos más robusto. El biserver viene con los scripts para MySQL, Oracle y PostgreSQL.

Pre-requisitos.-
  • Tener instalado y configurado el JDK v1.7 en la siguiente publicación se explica el procedimiento. JDK v1.8 no está totalmente probado, por lo que sugiero no usarlo con biserver
  • Tener instalado la base de datos  Oracle v10g o superior. Para esta publicación he usado Oracle Express Edition 11g
  • Haber descargado la aplicación biserver-ce de Pentaho y haberla copiado y descomprimido en el directorio: \biserver-ce-5.1
  • Haber descargado el controlador JDBC para  Oracle
Configuración paso a paso.-

1. Ir al directorio \biserver-ce-5.1\data aquí se encuentran los scripts para MySQL, Oracle y PostgreSQL

2. Abrir el directorio oracle10g y ejecutar los scripts: create_repository_ora.sqlcreate_quartz_ora.sqlcreate_jcr_ora.sql

NOTAS: password es la contraseña por defecto para los usuarios hibuser del repositorio hibernate,  quartz del repositorio quartz, y jcr_user del repositorio jackrabbit. Sugiero usar sqlplus para ejecutar los scripts.

Configuración de Tomcat

3. Copiar el driver JDBC de Oracle (ojdbc6.jar) al directorio \biserver-ce-5.1\tomcat\lib.

4. Editar el archivo context.xml ubicado en el directorio: \biserver-ce-5.1\tomcat\webapps\pentaho\META-INF. Colocar la siguiente configuración para cambiar la conexión a Oracle

<?xml version="1.0" encoding="UTF-8"?>
<Context path="/pentaho" docbase="webapps/pentaho/">
 <Resource name="jdbc/Hibernate" auth="Container" type="javax.sql.DataSource"
  factory="org.apache.commons.dbcp.BasicDataSourceFactory" maxActive="20" maxIdle="5"
  maxWait="10000" username="hibuser" password="password"
  driverClassName="oracle.jdbc.OracleDriver" url="jdbc:oracle:thin:@127.0.0.1:1521/XE"
  validationQuery="select 1 from dual" />
  
 <Resource name="jdbc/Quartz" auth="Container" type="javax.sql.DataSource"
  factory="org.apache.commons.dbcp.BasicDataSourceFactory" maxActive="20" maxIdle="5"
  maxWait="10000" username="quartz" password="password"
  driverClassName="oracle.jdbc.OracleDriver" url="jdbc:oracle:thin:@127.0.0.1:1521/XE"
  validationQuery="select 1 from dual"/>
</Context>

5. Eliminar el archivo pentaho.xml del directorio: \biserver-ce-5.1\tomcat\conf\Catalina\localhost

6. Editar el archivo web.xml en el directorio \biserver-ce-5.1\tomcat\webapps\pentaho\WEB-INF. En la línea 73 colocar lo siguiente para que únicamente se inicie la base de datos de ejemplo de HSQLDB:

<!-- [BEGIN HSQLDB DATABASES] -->
  <context-param>
    <param-name>hsqldb-databases</param-name>
    <param-value>sampledata@../../data/hsqldb/sampledata</param-value>
  </context-param>
  <!-- [END HSQLDB DATABASES] -->

Configuración en BI Server

Todos los archivos de configuración del servidor central de BI de Pentaho Community Edition (biserver-ce) se encuentran en el directorio: \biserver-ce-X.X.X\pentaho-solutions\system

El resto de configuraciones se realizarán en éste directorio.

7. Ir al subdirectorio /hibernate y editar el archivo hibernate-settings.xml, cambiar la etiqueta <config-file> al valor: system/hibernate/oracle10g.hibernate.cfg.xml como se muestra a continuación:

<?xml version='1.0' encoding='utf-8'?>
<settings>  
    <!--config-file>system/hibernate/hsql.hibernate.cfg.xml</config-file-->
 <config-file>system/hibernate/oracle10g.hibernate.cfg.xml</config-file>
</settings>

NOTA: no olvidar de editar el archivo oracle10g.hibernate.cfg.xml sí la base de datos está en otro servidor

8. Editar el archivo applicationContext-spring-security-hibernate.properties y cambiar la configuración de conexión a Oracle como se muestra a continuación:

jdbc.driver=oracle.jdbc.OracleDriver
jdbc.url=jdbc:oracle:thin:@127.0.0.1:1521/XE
jdbc.username=hibuser
jdbc.password=password
hibernate.dialect=org.hibernate.dialect.Oracle10gDialect

9. Editar el archivo quartz.properties en el directorio \biserver-ce-X.X.X\pentaho-solutions\system\quartz ubicar la propiedad org.quartz.jobStore.driverDelegateClass (línea 300) y colocar el siguiente valor:

org.quartz.jobStore.driverDelegateClass = org.quartz.impl.jdbcjobstore.oracle.OracleDelegate

10. Editar el archivo repository.xml de Jackrabbit en el directorio \biserver-ce-X.X.X\pentaho-solutions\system\jackrabbit. Realizar los siguientes pasos para apuntar Jackrabbit al repositorio de base de datos creado en Oracle:

  • Configuración del FileSystem: descomentar de la línea 53 a la 59. Comentar de la línea 71 a la 73
  • Configuración del DataStore: descomentar de la línea 101 a la 112. Comentar la línea 129
  • Configuración del Workspace: descomentar de la línea 206 a la 212. Comentar de la línea 225 a la 227. Descomentar de la línea 252 a la 260. Comentar de la línea 273 a la 276
  • Configuración del Versionamiento: descomentar de la línea 336 a la 342. Comentar de la línea 354 a la 356. Descomentar de la línea 382 a la 390. Comentar de la línea 402 a la 405

NOTA: no olvidar colocar el valor de PENTAHO_TABLESPACE en el parámetro tablespace para todas las conexiones.

...
<param name="tablespace" value="PENTAHO_TABLESPACE"/>
...

11. Reiniciar el servidor de BI de Pentaho

11 comentarios:

  1. Buenas amigo si tengo las bases de datos oracle en otro servidor que lineas modifico del archivo oracle10g.hibernate.cfg.xml username, password y cual mas?

    ResponderBorrar
    Respuestas
    1. Todas las que tengan 127.0.0.1 reemplaza con la IP del servidor. Archivos: context.xml, applicationContext-spring-security-hibernate.properties, oracle10g.hibernate.cfg.xml

      Borrar
  2. Buenas amigo, si la base de datos que voy a utilizar es una Oracle 11g entonces cambia el nombre del archivo oracle10g.hibernate.cfg.xml por oracle11g.hibernate.cfg.xml? asi como las referencias?

    ResponderBorrar
    Respuestas
    1. No, el nombre debes dejarlo igual independientemente sí usas 10g o 12c, lo que sí usa el driver jdbc acorde a la versión con la que vas a trabajar.

      Borrar
  3. Estimado Mauricio,
    Estoy configurando el BI Server Pentaho 5.2 para Oracle 11. He seguido paso a paso la configuración de su blog , pero me encuentro con este problema recurrente.
    Su ayuda sera muy valiosa. He revisado algunos posts pero no me dan la solución a este problema.

    org.apache.catalina.loader.WebAppClassLoader Clear References Threads
    GRAVE: the web application [/pentaho] appears to have started a thread named [DefaultQuartzScheduler_Worker_n] but has failed to stop it. This is very likely to create memory leak.

    ResponderBorrar
    Respuestas
    1. Hola pudiste resolver a mi me da el mismo error, cualquier información te agradezco.
      Betsy

      Borrar
    2. Te sugiero que revises nuevamente los archivos de configuración con BI Server detenido y borres el contenido de los siguientes directorios:

      \biserver-ce-5.2\tomcat\work\Catalina\*
      \biserver-ce-5.2\tomcat\temp\*
      \biserver-ce-5.2\pentaho-solutions\system\osgi\cache\*
      \biserver-ce-5.2\pentaho-solutions\system\jackrabbit\repository

      Espero esto pueda ayudarte.
      Saludos,

      Borrar
  4. Excelente información, algunas referencias al numero de linea han cambiado en la version 5.4 de Pentaho bi-server CE, pero facilemte se pueden conseguir siguiendo estos pasos.

    Saludos

    ResponderBorrar
  5. Hola muy buen manual. he realizado toda la instalacion pero cuando trato de cargar la pagina no me muestra nada.

    ResponderBorrar
  6. hola muy buen manual, tengo una consulta: puedo utilizar otro tablespace ?

    ResponderBorrar