Tengo instalado Oracle Workflow, y lo utilizo desde Oracle Warehouse Builder. Para definir los flujos de proceso no hay ningún problema, todo bien, y la validación también me la da como correcta. El problema me lo encuentro cuando quiero desplegar un workflow desde el control center. Parece que cuando tiene que crear el dblink se encuentra un nombre demasiado largo, que sobrepasa los 30 caracteres que permite PL/SQL en los nombres de variables.
El mensaje de error que devuelve al intentar hacer el despliegue es este:
Nombre | Acción | Estado | Log |
ODS | Crear | Error |
ORA-06550: línea 1, columna 29: PLS-00114: el identificador 'DWH.REGRESS.RDBMS.DEV.US.O' es demasiado largo |
ODS | Crear | Error |
RPE-02215: Fallo al probar el sinónimo ODS_WB_RTI_WORKFLOW_UTIL. |
ODS | Crear | Error |
RPE-02260: Database User OWF_MGR must be a Control Center User. Please use the OWB Design Client against the Control Center repository to grant the Control Center User role. |
Yo creo que tiene que ver con el churro que la base de datos añade a los nombres de DBLINK en la versión 10g (es la que he utilizado como repositorio de OWF), que hace que este sea demasiado largo.
Alguien sabe si es este el problema o puede ser otra cosa? Si fuera este, cómo hago para que la base de datos no agregue al nombre el 'REGRESS.RDBMS.DEV.US.ORACLE'. Si el link se llamara sólo 'DWH' seguro que ya no tendría problema.
- Printer-friendly version
- Log in to post comments
Efectivamente el problema
Submitted by cfb on 29 May, 2008 - 22:47
Efectivamente el problema estaba en el nombre del dblink que crea OWF. A partir de la versión 10g, las bases de datos Oracle tienen un nombre global compuesto por el nombre de la instancia, lo que siempre hemos llamado SID, y el dominio. Este dominio por defecto es REGRESS.RDBMS.DEV.US.ORACLE.COM, o sea que el nombre global de mi base de datos era DWH.REGRESS.RDBMS.DEV.US.ORACLE.COM
Al crear cualquier DBLink, la base de datos agrega al mismo el nombre del dominio:
SQL>create database link mi_db_link connect to scott identified by tiger using 'dwh'; Database link created. SQL> select db_link from user_db_links;
DB_LINK ------------------------------------------
MI_DB_LINK.REGRESS.RDBMS.DEV.US.ORACLE.COM
Este dominio realmente no sirve de mucho, por lo que no pasa nada si se cambia por otro más corto (con un usuario con privilegios de DBA):
SQL> select * from global_name;
GLOBAL_NAME --------------------------------------------------------------------------------
DWH.REGRESS.RDBMS.DEV.US.ORACLE.COM
SQL> alter database rename global_name to dwh.dataprix.com;
Base de datos modificada.
Ahora que hemos cambiado el nombre del dominio podemos volver a crear el dblink, y el nombre que le asigna la base de datos ha de ser más corto: SQL> dropdatabase link mi_db_link;
Enlace con la base de datos borrado.
SQL> create database link mi_db_link connect to scott identified by tiger using 'dwh';
Enlace con la base de datos creado.
SQL> select db_link from user_db_links;
DB_LINK --------------------------------------------------------------------------------
MI_DB_LINK.DATAPRIX.COM
Nuestro database link ahora se llama MI_DB_LINK.DATAPRIX.COM, con una longitud menor que 30 caracteres, por lo que el Workflow ya no tiene ningún problema al hacer el 'deploy'.
Como resumen, por si alguien se ha perdido, lo único que había que hacer era reducir el nombre global de la base de datos con:
SQL> alter database rename global_name to miBD.mi.dominio.com;