Oracle Warehouse Builder: Información y documentación sobre OWB

Oracle Warehouse Builder: Información y documentación sobre OWB Carlos 13 Agosto, 2009 - 13:56

Parece que encontrar documentación sobre Oracle Warehouse Builder en castellano es complicado, sobretodo si hablamos de manuales o documentación técnica.

Abro este tema del foro para que vayamos comentando aqui lo que encontremos entre todos.

amigos :
podrian facilitar un manual en español de OWB version 10.1.0.4
Gracias

En respuesta a por Anonimo (no verificado)

Es complicado encontrar documentación en castellano sobre estos temas. De todas maneras, mientras esperamos a que alguien publique el manual en español, podemos consultar la Documentación oficial de Oracle sobre Warehouse Builder . Oracle publica sus documentos tanto en formato PDF como en HTML, e incluso te puedes descargar la librería completa. Es especialmente interesante el manual Oracle Warehouse Builder User's Guide Carlos Fernández Analista de sistemas

Es muy necesario para mi carrera obtener toda la información posible que exista en castellano de Oracle y especialmente interesante el manual Oracle Warehouse Builder incluyendo la guia de usuario y sus ejemplos.

En respuesta a por Erick Castañón… (no verificado)

idem amigo ne4cesitop info de OWB en español:

necesito depurar las tablas de audit : "WB_RT_AUDIT" que crecen a lo loco en mi aplicacion, tambien si tienen a mano como configurar que no se sigan registrando tantos eventos.. helpme gracias... carloscermelli@gmail.com

Hola,

a mi también me gustaría obtener más información sobre esta herramienta.

si tenéis información en castellano, arquitectura, integracion con otras aplicaciones, etc agradezco que la compartáis.

 

Muchas gracias.

En respuesta a por gladis

En la web oficial de Oracle se puede encontrar algún documento en castellano. No entran demasiado en detalle, pero al menos para ver cómo se organiza OWB a nivel de arquitectura, o para ver por donde van los tiros con algunas opciones pueden servir:

Información General sobre Oracle Warehouse Builder 11g

Opción Data Quality de Oracle Warehouse Builder

Opción Empresarial ETL de Oracle Warehouse Builder

En respuesta a por Carlos

Hola,

 

ya tenía conocimiento de estos documentos, pero la verdad, es que no hay mucha información técnica en ellos.

Gracias por tu ayuda.

Totalmente  Carlos.

Lo mismo me esta pasando ahora a mí con: IBM DB2 Warehouse V9.5, lo hay nada de tutórales en castellano.

Pero no me sorprende ya que en la versión anterior me pasó exactamente lo mismo, es más se formo un foro de DB2 (http://db2ug.byethost18.com/ ) el primero de Latinoamérica para unir/difundir/ todo lo referente a DB2.

 

Commit manual OWB

Commit manual OWB penyo 7 Septiembre, 2010 - 14:11

Buenas tardes,

 

Os comento el problema que me ha surgido, en los flujos, cuando lanza algun mapeo o un procedimiento, nos surgió la duda de como realizar un rollback de los datos. Por otros foros descubrimos que lo suyo es configurar el mapeo, como commit manual, y al final del flujo si todo ha ido correcto, hacer un rollback o un commit. Pinta sencillo, hemos configurado todo así, pero parece ser que aun configurando la correspondencia como manual, hace un commit igualmente. ¿Sabeis algo al respecto de porque puede estar pasando esto?

 

Gracias.

Os cuento más detenidamente... tengo un flujo que carga dos tablas. Tengo en ambas tablas configurado el commit manual. Y se me pueden dar los siguientes casos:

- Las dos tablas cargan mal: En cuanto una carga mal, hace rollback y pasa a la siguiente. Tambien carga mal, hace rollback y termina. Hasta aqui perfecto.

- Una tabla carga bien y la otra mal: Una tabla carga mal, por lo que hace el rollback y pasa a la siguiente. La siguiente carga bien, entonces hace commit de esta (a pesar de tenerlo configurado como manual).

 

Mi problema está en que no me interesa que haga commit hasta el final, en cuanto una tabla falle, quiero que haga un rollback de todo, y lo que hace es hacer rollback unicamente de la tabla que ha fallado.

En respuesta a por penyo

Supongo que utilizas el operador 'post mapping' para hacer el commit o rollback final, no? En teoría si lo configuras como manual, y lo controlas con este operador debería actuar sobre todo lo anterior. Si ya lo haces así puede que necesitemos que intervenga alguien que se haya peleado más con estas opciones ;)

Te enlazo también sección Embedding Commit Logic into the Mapping del Manual de Usuario de OWB 10.2, por si no lo has consultado aún, siguiendo los enlaces de las diferentes opciones puede que encuentres lo que te está pasando..

Buenos días! Eso es lo que tengo hecho, pero tengo el OWB 11.2 y no se porque no me lo realiza bien, he leido en el link que, se puede hacer con un SQL*PLUS, lo he intentado de diversas maneras y se queda bloqueado en el lanzamiento del SQL*PLUS. Lo he puesto tal cual viene en el link de oracle:

begin 

carga_fallo.main(status);

 if status!='OK' then rollback

   else carga_fallo2.main(status); 

 if status!='OK' then rollback;

   else commit;

 end if;

 end if;

end;

La sintaxis es erronea con total seguridad. ¿Sabéis algo al respecto?

 

Gracias por la ayuda y un saludo.

En respuesta a por penyo

No sé si entiendo bien la lógica, pero creo que te falta el punto y coma después del rollback, y los paréntesis en la condición del IF siempre son acosejables. Prueba con esto:

begin
  carga_fallo.main(status);
  if (status!='OK') then rollback;       
  else carga_fallo2.main(status);
      if (status!='OK') then rollback;
      else commit;
      end if;
  end if;
end;

En respuesta a por Carlos

Hola!

Si, gracias Carlos, lo había modificado, tal y como me lo has puesto tu ahora. Pero nada, no hay manera, creo que no interpreta bien los mapeos, no estoy seguro de que la sentencia sea "mapeo.main" y no he encontrado nada al respecto por internet.

Creando un espacio de trabajo OWB 11g (ERROR)

Creando un espacio de trabajo OWB 11g (ERROR) jalbe_40 3 Julio, 2014 - 17:23

 Al momento de comprobar la conexion en la ubicacion de la base de datos ORACLE  (CENTRO DE CONTROL)  me arroja el sigueinte error:

 

resulatdo de prueba de conexion:

 

 java.sql.SQLException:ORA-00604:error ocurred at recursive SQL level 1

ORA-01882:timezone region not found

 

   Si alguien me puede ayudar... GRACIAS

 

  HELP ME!!!

 

 NOTA: Lo parametro de conexion esta bien.

Si trabajas con Windows, prueba con la solución que proponen en este blog, que es editar el Run_Service.bat para incluir la zona horaria (-Duser.timezone="+01:00", por ejemplo) entre los parámetros de la llamada al servicio del centro de control.

Y si se trata de Unix tendrías que hacer lo mismo, pero editando el run_service.sh

En ambos casos recuerda reiniciar de nuevo los servicios para que las modificaciones se hagan efectivas.

Saludos,

 

En respuesta a por Carlos

Amigo  tengo este caso:  

 * Tabla A

 * Tabla B

 

 NOTA: La dos tablas  tienen registros

 

  Se debe  insertar los registro  de la Tabla A a la Tabla B  pero al mismo tiempo esos registro de la Tabla A  no debe estar en la tabla B ( no pueden ser repetidos) 

 mi pregunta es : estoy utilizando el operador  KEY LOOKUP ( OWB)  para la busqueda de la tabla B,  y  defino la condicion entres los valores unico de las tablas, pero solo me esta trayendo los codigo unico, lo demas campos no,   si podria darme un ejemplo de como utilizar  este componente  KEY LOOKUP o  que otra opcion puedo realizarlo?

 

 gracias !!

 

 

 

En respuesta a por jalbe_40

¿Te ha funcionado lo de incluir la zona horaria en el script?

¿Utilizas el asistente o lo haces directamente? Recuerdo que este asistente era casi más complicado que hacerlo directamente. Si usas el asistente, para los primeros pasos iba bien, pero los últimos mejor salte del asistente y configura los mapeos de los campos manualmente.

De todas maneras, no te serviría simplemente configurar configurar el tipo de carga de la tabla destino en modo update/insert? Si lo haces así, si el registro no existe lo inserta, y si ya existe lo actualiza, es lo más sencillo. Incluso si no quieres actualizar los registros en caso de que ya existan, si no recuerdo mal, puedes utilizar la opción CHECK/INSERT para insertar sólo los registros que no existan ya según la condición que definas, claves primarias o foráneas..

 

Normal
0

21

false
false
false

ES-VE
X-NONE
X-NONE

MicrosoftInternetExplorer4

Que tal amigo disculpe.

 

No me funciono lo de incluir la zona horaria en el script Run_Service.bat  me sigue dando el mismo problema.

 

 Por otro parte sobre el caso de la inserción de registros de la Tabla A a la Table B ciertamente es un poco más complicado por el asistente. Y la otra opción  del la propiedad de la tabla CHECK/INSERT es una buena alternativa, pero finalmente realice el mapeo manualmente (como usted lo menciona) con la expresión sql NOT EXISTS.

SELECT *

FROM TABLA A   TA

WHERE NOT EXISTS (SELECT *

                  FROM TABLA B  TB

       WHERE TA.ID_ORIGEN=TB.ID_ORIGEN)

 

 Solo me trae los registros de la tabla A que no existan en la tabla B.     

 

NOTA:  lo realice con  el componente FILTRO de OWB.

 

 

 Gracias Amigo!!

/* Style Definitions */
table.MsoNormalTable
{mso-style-name:"Tabla normal";
mso-tstyle-rowband-size:0;
mso-tstyle-colband-size:0;
mso-style-noshow:yes;
mso-style-priority:99;
mso-style-qformat:yes;
mso-style-parent:"";
mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
mso-para-margin-top:0cm;
mso-para-margin-right:0cm;
mso-para-margin-bottom:10.0pt;
mso-para-margin-left:0cm;
line-height:115%;
mso-pagination:widow-orphan;
font-size:11.0pt;
font-family:"Calibri","sans-serif";
mso-ascii-font-family:Calibri;
mso-ascii-theme-font:minor-latin;
mso-fareast-font-family:"Times New Roman";
mso-fareast-theme-font:minor-fareast;
mso-hansi-font-family:Calibri;
mso-hansi-theme-font:minor-latin;}

En respuesta a por jalbe_40

Vaya, entonces ya no sé que te puede estar fallando, cuando lo encuentres te agradezco si lo compartes.

Al menos para filtrar los registros que ya existen en la otra tabla ya tenemos varias soluciones. Entiendo que estás aplicando el filtro justo antes del insert. No sé si en algún momento necesitas todos los registros de la tabla A, pero si haces esta misma select al principio del flujo, al definir el Source, te puede mejorar bastante el rendimiento porque en lugar de dos lanzas sólo una select, y ya no 'arrastras' los registros que no necesitas.

 

  Con gusto lo compartire!!

 

  Y si tendre presente  lo que comentas muchas gracias Carlos.

 

  

 

 

Cómo hacer un DECODE en los mappings de OWB

Cómo hacer un DECODE en los mappings de OWB Carlos 10 Febrero, 2009 - 22:52

Para los que estamos acostumbrados a utilizar el operador decode del SQL de Oracle sorprende bastante que no esté incluída en la sintaxis que se puede utilizar dentro del generador de expresiones de Oracle Warehouse Builder.

Pero todo tiene solución. Si para un campo se quiere seleccionar un valor en función del contenido de otro o más campos, se puede utilizar el objeto EXPRESSION, conectar en la entrada todos los campos implicados, y en la expresión del campo de salida olvidarnos del DECODE y utilizar en su lugar un CASE WHEN ..., que sí está soportado.

Por ejemplo:
CASE WHEN entrada1 = 0 THEN 'Falso'
        WHEN entrada2 = 1 THEN 'Cierto'
        ELSE 'Indefinido'
END

Hola, me encuentro utilizando OWB, y para resolver el problema de divisiones por cero utilizo Decode en una expresion, tal como sigue

DECODE(INGRP1.ORG2,0,NULL,INGRP1.ORG1/INGRP1.ORG2)

Saludos

En respuesta a por Alfonso (no verificado)

Pues en teoría no te debería funcionar. Yo lo probé con la versión 10.2 de Warehouse Builder y la expresión daba error hasta que lo cambié por el CASE, y se que en versiones anteriores pasaba lo mismo. Puede ser que tu estés utilizando una versión superior? A lo mejor en la 11 por fin se puede utilizar el Decode..

En respuesta a por Carlos

Hola, realmente al realizar la verificación de la expresión Decode envia error, pero si omites esta parte y ejecutas tu maping funcionará correctamente.

(yo solo soy un usuario, descubrí esto a "prueba y error" jajajaja)

Saludos

En respuesta a por Alfonso (no verificado)

Bueno, pues gracias a tu aportación ya tenemos 2 maneras de solventar el problema, utilizar un CASE WHEN, o utilizar el DECODE y pasar del error que nos da el validador, pero asegurándonos de que la expresión esté bien escrita!

En respuesta a por Carlos

Hola.. yo trabajo de OWB hace tiempo y tiene ciertas cosas o mañas. El decode SI funciona cuando utilizas una expresion aunque si clickeas en la opcion VALIDAR te da un error o warning..

En resumen tiene que usarlo sin validarlo o bien no darle importancia.. pasa lo mismo con trunc y no me acuerdo cual otra sentencia

 

El error ORA-30926 en las cargas de OWB

El error ORA-30926 en las cargas de OWB Carlos 18 Febrero, 2009 - 23:09

Cuando uno de nuestros mappings realiza una carga sobre una tabla en modo INSERT/UPDATE puede que nuestro proceso falle devolviendo este extraño error:
ORA-30926: no se ha podido obtener un juego de filas estable en las tablas de origen

La explicación suele ser que al final este tipo de cargas realiza una operación de MERGE, y si en la correspondencia entre los datos origen y los datos destino a un registro de la tabla destino le toca más de uno de las tablas origen el MERGE no funciona y devuelve este error. Normalmente se trata de un problema de duplicidad en los registros origen.

Para ver una explicación más extensa y las opciones para solucionarlo, consultar El error ORA-30926 como resultado de una operación Merge

Funcionamiento del schedule con mappings y flujos

Funcionamiento del schedule con mappings y flujos cfb 8 Julio, 2008 - 00:16

Tengo un OWB 10.2 sobre una BD Oracle 10g y estoy intentando utilizar el scheduler para que los workflows y los mappings que he creado se lancen automáticamente por la noche.

Desde Warehouse Builder todo funciona bien, creo los módulos del scheduler y los asocio con los flujos que quiero lanzar. Hago el deploy y todo perfecto, pero después a la hora prevista no se ejecuta nada, y si lanzo el proceso manualmente sí que funciona.

He consultado la base de datos y veo que no crea ningún job ni nada por el estilo, solo un procedure que alguien debería ejecutar para que haga algo.

Veo que en versiones anteriores de OWB era bastante complicado poder planificar trabajos, pero en esta debería ser más sencillo.

Me falta algo por instalar, o esta versión también necesita ejecutar algunos scripts para que el scheduler funcione?

 Creo que te puede faltar un paso y es que además del hacer el deploy hay que lanzar los trabajos planificados para que se ejecuten automáticamente.

 

Un saludo

Instalación Configuración OWB

Instalación Configuración OWB Anonimo (no verificado) 19 Marzo, 2010 - 16:45

Buenos dias gente!

Tengo poca experiencia en OWB y en el lugar en donde estoy no hay gente con experiencia en esta herramienta, por lo tanto recurro a uds.

Quisiera consultarles lo siguiente.

Tengo instalado el OWB sobre una bbdd1 y el esquema A, del cual es el origen de una parte de mis datos,

también tengo esquema B y C sobre la misma bbdd1.

El destino de mis etls esta en la bbdd2 esquema D.

 

1 esta bien esta arquitectura?

2 No logro configurar el owb para que me ponga esquema.nombre_tabla, dando el error oracle ORA-00942.

Sabrian darme algun tip para la resolucion de este problema?

 

Saludos,

Patricio

 

 

 

Gracias, problema solucionado. 

En respuesta a por pinterlandi (no verificado)

 Me alegro de que lo hayas podido solucionar.

Supongo que el problema estaba en que tenías OWB instalado en la BD de origen, en lugar de la de destino.

En mi opinión, una de las limitaciones más importantes de Oracle Warehouse Builder es que está pensado para obtener información de diferentes orígenes, pero sobre un único destino, que ha de ser la base de datos Oracle donde debería crearse el almacén de datos, y donde ha de estar instalado el runtime del Control Center.

Yo mismo me encontré este problema en mi primera instalación de OWB, y me sorprendió bastante que en este aspecto la herramienta no fuera más flexible.

Bueno, ya nos explicarás si haces cosas interesantes con OWB..

Saludos,

 

En respuesta a por Carlos

Creo que esto no es asi.

Se pueden tener todas las bases de datos destino que quieras, siempre que se instale la parte del runtime OWB en cada base de datos "adicional" y se levante el servicio de control center service (que para eso esta)

Saludos;

En respuesta a por MLD (no verificado)

 Tienes razón, en el mismo tema del foro sobre requerimientos de targets que he enlazado en la respuesta, yo mismo comentaba que se puede hacer siempre que instales el 'runtime', y que tener que hacer esa instalación me parece una limitación importante. Los sistemas destino no tienen porqué estar 'bajo tu control', y me parece demasiado intrusivo tener que hacer esta instalación sólo para escribir sobre una base de datos Oracle.

Seguramente se me han cruzado los cables con la otra limitación importante, que es que OWB sólo puede tener como destino bases de datos Oracle, no puede cargar ni modificar datos en otras bases de datos.

 

Gracias por la puntualización, y espero no haberme equivocado también en la segunda afirmación ;)

Problema con Workflow que no funciona al utilizar un mapping correcto

Problema con Workflow que no funciona al utilizar un mapping correcto Carlos 29 Enero, 2009 - 23:01

Tengo un problema con OWB y OWF. Tengo un proceso de carga definido con Oracle Workflow. Este proceso se me queda 'enganchado' en un mapping y no encuentro cómo solucionarlo.
Lo extraño es que si ejecuto el flujo completo el proceso se queda parado con este mapping, pero si ejecuto todos los mappings por separado desde el mismo Control Center todo funciona correctamente.
Desde el Control Center he hecho un drop de todos los flows y he vuelto a desplegarlos con la opción Create para asegurarme de que está utilizando la última versión.
En el Centro de Control el flujo se queda en estado de ejecución, pero si lo examino obtengo el siguiente mensaje de error:

VENTAS
 Description : Runtime User : OWBOWNER Started : 2009-02-03 15:20:59.0
Status
Log
INFORMATIONAL
  RPE-02075: Fallo de Oracle Workflow al procesar la solicitud de ejecución para la actividad VTAS_FRAQ:MAP_STG_CARGA_VENTA. Puede que los objetos dependientes no se hayan desplegado todavía.
INFORMATIONAL
  ORA-01403: No se ha encontrado ningún dato
  ORA-01403: No se ha encontrado ningún dato
  ORA-01403: No se ha encontrado ningún dato
INFORMATIONAL
  WB_RT_WORKFLOW_UTIL_10G.

  Execute_Any_Task(STG, WB_IK_20090203_152336_158645, 2693, RUN)
  WB_RT_WORKFLOW_UTIL_10G.
Execute_Task(STG, WB_IK_20090203_152336_158645, 2693, RUN)
  Wf_Engine_Util.Function_Call(
WB_RT_WORKFLOW_UTIL_10G.EXECUTE_TASK, STG, WB_IK_20090203_152336_158645, 2693, RUN)
Error
  RPE-02083: Error en las actividades del proceso VENTAS. Puede que los objetos no se hayan desplegado. Puede utilizar el Monitor de Oracle Workflow para reintentar las actividades o abortar el proceso.

Alguien tiene alguna sugerencia? Lo siguiente que voy a probar es a partir el flujo en dos

Ya he podido solucionarlo.

El problema lo tenía desde que había modificado un mapping. Al final, dejando ese mapping aislado en un flujo para él solito me he dado cuenta de que tenía que borrarlo del workflow y volver a seleccionarlo de la parte Available Objects del Explorer de OWB.

Moraleja: si se modifica un mapping y este aparece en un flujo de proceso, borrar el mapping del flujo y volver a seleccionarlo. Por lo que veo con Warehouse Builder lo de borrar y volver a crear es siempre la técnica más recomendable cuando se hace cualquier cambio.

De hecho he tenido que volver a aplicar esta técnica cuando he modificado el flujo que no me funcionaba. Resulta que tengo otro flujo que llama al del mapping. Pues me ha vuelto a salir el mismo error, que he solucionado borrando el icono del proceso hijo en el workflow 'padre' y volviéndolo a insertar seleccionándolo del apartado Process Flows de la pestaña Available Objects del Explorador. Cosas de OWB, será cuestión de acostumbrarse..

En respuesta a por Carlos

Hola Carlos,

Este error que comentas es muy típico en OWB y también sucede en ODI, el problema rádica en que cada vez que modificas un mapping, OWB no es capaz de refrescar los workflows donde ese mapping aparece y por lo tanto te toca refrescarlos a tí manualmente, ya sea elimandolo y volviendolo a generar o enviandolo a un workflow separado.

Lo peor es que no te encuentras con él problema hasta que ejecutas el workflow en cuestión y la palicación no es capaz de decirte todos los workflows que se ven afectados por el mapping que has cambiado.

Un saludo.

P.D.: Yo se de una ETL que eso no le pasa y tiene mucho mejor solucionado el tema de la reutilización de procesos, je,je,je !!!!

David Soto

En respuesta a por David Soto (no verificado)

Hola David, yo también me alegro de verte por aquí

Déjame adivinar, la ETL que comentas se llama Powercenter? Puedes nombrarla tranquilamente, y contarnos todo lo que quieras sobre ella, lo mejor para tomar decisiones acertadas es estar bien informado..