Mensaje de error ORA-02069. El Parámetro Global_names se debe definir en TRUE

Porque al utilizar una function creada por nosotros muvale.dias:

Si ejecutamos desde el entorno de producción, haciendo referencia a la tabla en producción, FUNCIONA

insert into muvale.proceso select * from muvale.proceso prc where muvale.dias(prc.f_baja , prc.f_alta, sysdate, sysdate) > 0 and anproces = 2011 and nmproces = 1

Si ejecutamos desde el entorno de producción, haciendo referencia a la tabla en DESARROLLO (@tasio), NO FUNCIONA?

insert into muvale.proceso@tasio select * from muvale.proceso prc where muvale.dias(prc.f_baja , prc.f_alta, sysdate, sysdate) > 0 and anproces = 2011 and nmproces = 1

Aparece el siguiente mensaje de error ORA-02069 El Parámetro Global_names se debe definir en TRUE para esta operación

He visto que el error surge al utilizar la funcion muvale.dias. Aunque ocurre con cualquier function creado por mí. En cambio si se utilizan funciones propias de oracle, no hay problema

Si quito esta función de la sentencia SQL si funciona

¿Se debe incluir en la funtion algún tipo de sintaxis para indicar que se debe ejecutar entre entornos??

Este es el código de la función

CREATE OR REPLACE FUNCTION muvale."DIAS"  (fb DATE, fa DATE, fi DATE, ff DATE) RETURN INTEGER AS k_dias INTEGER; BEGIN /* CALCULA EL NUMERO DE DIAS DE UN PERIODO (fa -> fb) DENTRO DE OTRO (fi -> ff) */ IF ((fb > fa) or (fb > ff) or (fa < fi)) THEN k_dias := 0; ELSE k_dias := 0; IF fb < fi THEN IF fa is not null AND fa <= ff THEN k_dias := fa - fi + 1; ELSE k_dias := ff - fi + 1; END IF; ELSE IF fa is not null AND fa <= ff THEN k_dias := fa - fb + 1; ELSE k_dias := ff - fb + 1; END IF; END IF; END IF; IF k_dias > 30000 THEN k_dias:=0; END IF; RETURN k_dias; END DIAS;

Creo que el problema lo tienes con el GLOBAL_NAMES al acceder al dblink en la función. Has probado a activar el GLOBAL_NAMES, como te sugiere el error?

Te enlazo el tema Oracle Global_names, donde se discute su funcionamiento, y cómo activarlo o desactivarlo.