Compilar paquetes de oracle

¿Hola cómo estas?
Necesito de tu ayuda de nuevo, la bd que tengo esta en oracle 10g se me están descompilando algunos paquetes del sys y eso no puede ser, no he encontrado la forma de que no se descompile, compilo todos los paquetes y me desconecto de la bd al volverme a conectar aparece los paquetes descompilados nuevamente. No se que hacer y esto me esta asiendo fallar algunas formas..
La verdad necesito tu ayuda urgente, muchas gracias

1 respuesta

Respuesta
1
Esta un poco raro tu problema, tal vez me puedas comentar desde que herramienta lo estas compilando o simplemente verifica los permisos sobre esos paquetes para el usuario con el cual estas recompilando. Una forma sencilla de ejecutar un recompilado de un esquema completo es utilizando el comando DBMS_UTILITY, así por ejemplo:
EXEC DBMS_UTILITY.compile_schema(schema => 'SCOTT');
Si los paquetes que te dan problema son los de SYS, conéctate con SYS o con un usuario con privilegios de SYSDBA. Recuerda que se tienen que compilar tanto el PACKAGE como el PACKAGE BODY asociado. Existe también unos scripts propios de la base para recompilar los objetos inválidos de la base (utlrp.sql y el utlprp.sql) pero se ocupan por lo general después de la aplicación de algún parche o cambio fuerte a la base.
Éxitos.
esto EXEC DBMS_UTILITY.compile_schema(schema => 'SYS'); lo hize pero no me funciona no pasa nada y revizo los paquetes del sys y estan igual de descompilados, la verdad esto si esta bien raro.
Si lo estoy haciendo con el usuario sysdba
nota: "El problema es según te entiendo, que si lo logras compilar al estar dentro de la session ( en este punto no te da ningún error de compilado), pero al cerrarla y volver a abrirlo te aparece descompilado?. es que me parece algún problema de permiso sobre los paquetes por eso la insistencia en el usuario, si hubiera algún problema con el paquete no te lograra compilar, y al hacerlo con otro usuario sucede exactamente lo que te pasa.".
Te agradezco mucho la colaboración la verdad no se que hacer
Me imagino que si, ¿pero para asegurarme lo ejecutas con SYS o con un usuario con privilegios de SYSDBA y al momento de conectarte le especificas "AS SYSDBA"?
El problema es según te entiendo, que si lo logras compilar al estar dentro de la session ( en este punto no te da ningún error de compilado), ¿pero al cerrarla y volver a abrirlo te aparece descompilado?. Es que me parece algún problema de permiso sobre los paquetes por eso la insistencia en el usuario, si hubiera algún problema con el paquete no te lograra compilar, y al hacerlo con otro usuario sucede exactamente lo que te pasa.
Prueba con este otro paquete:
EXECUTE UTL_RECOMP.RECOMP_SERIAL();
Es importante que no se estén ejecutando sentencias DDL sobre los paquetes al momento de ejecutarlo.
cuando ejecuto EXECUTE UTL_RECOMP.RECOMP_SERIAL();me sale error de sintanxis comocomo deberia de colocarlo exatamente...
Es justamente así el comando, a veces las herramientas un poco más gráficas no logran interpretar algunas sentencias, ejecutalo desde un SQL Plus y no te debería dar problema:
EXECUTE UTL_RECOMP.RECOMP_SERIAL();

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas