Base de datos

Procedures en Oracle: Errores de ejecucion

Hola *ALL.

Tengo un problema que está empezando a afectar mi sistema nervioso porque no consigo saber la razón.
Tengo una procedure en Oracle (10.2) que llama a 3 procedures más.
Cuando termina de ejecutar la primera y se dispone a ejecutar la segunda, aparece el siguiente mensaje:

Connecting to the database XXXXXX.DWH.
ORA-04068: se ha anulado el estado existente de los paquetes
ORA-04065: stored procedure "DWH.P_IMS_MENSUAL_PRESENTACION" no se ha ejecutado porque se ha modificado o borrado
ORA-06508: PL/SQL: no se ha encontrado la unidad de programa llamada : "DWH.P_IMS_MENSUAL_PRESENTACION"
ORA-06512: en "DWH.P_LANZA_COMERCIAL", línea 25
ORA-06512: en línea 2
Process exited.
Disconnecting from the database XXXXXX.DWH.

Si comento la primera procedure, la segunda (la que falla) se ejecuta perfectamente.
No hace falta decir que las procedures "estan perfectas" y no tienen ni un solo fallo.
Alguna sugerencia ??

Muchas gracias !!
JosiMac

Replicar registros a veces puede ser mas simple de lo que parece

Easy Dump Oracle (exp.exe, imp.exe). Así se llama una herramienta que incorpora Oracle XE que nos permitirá hacer exportaciones e importaciones de datos en tiempo record. En mi actual proyecto la utilizamos para generar los ficheros que se exportan a los clientes como replica de los datos servidor y la verdad es que funciona muy bien.
Antes de usar esta herramienta, se había diseñado un sistema de replicas mediante Remoting que enviava a los clientes las filas en un determinado orden y cantidad, cliente por cliente. Pero en el volumen con el que trata, 32000 registros en el peor de los casos, no daba un rendimiento muy adecuado, dado que el control lógico y a alto nivel incluido cargaba demasiado de lógica el movimiento. Reduciendo al absurdo, y pensando de la forma más simple, se dedujo que para que enviar una a una las filas de una tabla que se tiene que replicar cada día, mejor enviar tabla entera y punto. Y así funciona ahora, se genera el fichero con las tablas principales, y se descarga desde el cliente.

Insert entre bases de datos remotas enlazadas por dblink

Para hacer un insert desde una tabla de una base de datos TablaBD1 a otra base de datos TablaBD2 a través de un dblink debería haber dos maneras:
 

1- Crear el database link en la base de datos origen BD1 y hacer el insert hacia la tabla de la base de datos destino BD2 a través de este dblink

En la base de datos BD1:

CREATE [PUBLIC] DATABASE LINK BD1toBD2_dblink
CONNECT TO usuario2
IDENTIFIED BY password2
USING 'BD2';

INSERT INTO TablaBD2@BD1toBD2_dblink
(SELECT * FROM TablaBD1);

* Para simplificar suponemos que las tablas tienen la misma estructura
 

2- Crear el database link en la base de datos destino BD2 y hacer el insert seleccionando los registros de la tabla de la base de datos origen BD1 a través de este dblink:

En la base de datos BD2:

Instalación de una base de datos Oracle sobre Linux

Para instalar una base de datos Oracle sobre una distribución Linux lo mejor es seguir las indicaciones de Oracle. En Oracle by example - Oracle database 10g on a single instance Oracle explica de una manera bastante clara cómo hacerlo.

Una cosa importante a tener en cuenta es que cada distribución LINUX tiene sus peculiaridades, y que no todo sirve para todas. Lo más recomendable es utilizar las que están certificadas por Oracle, eso no garantiza que no surgan problemas, pero por lo menos Oracle los documenta. Oracle suele certificar para distribuciones SUSE en su versión empresarial (SLES) y RedHat.

Una buena opción, si queremos tener lo más parecido a las versiones empresariales, y poder ir actualizando nuestro SO, puede ser utilizar Open SUSE o CentOS. Otra puede ser utilizar su propia distribución Oracle Enterprise Linux

 

Busqueda con el motor de Google

Google
 
 
 
 
Distribuir contenido