Oracle 10 y el parchecito..
Hace unas semanas pusimos un parche en los servers Oracle 10 productivos, seguimos la secuencia (retorcida) que indicaba el instructivo, lo verificamos todo y andaba todo bien... O eso parecía.
Resulta que al hacer un export de todo, fallaba y daba un error en un paquete.
La solución es sencilla, ejecutar este script para detectar objetos que requieren ser compilados, y repetirla hasta que no haya mas objetos...
Pero, me pregunto, porqué el proceso de instalación del parche no hace esto mismo al acabar? si hay objetos inválidos, los tenemos que compilar, no hay mas ciencia.
Preguntas sin respuesta...
set head off
set pagesize 0
set echo off
set verify off
set feedback off
set termout off
spool recompilar.sql
select 'alter '||
decode(object_type, 'PACKAGE BODY', 'PACKAGE',
object_type) || ' ' ||
owner||'.'||
object_name||' compile' ||
decode(object_type, 'PACKAGE BODY', ' BODY') || ';'
from dba_objects
where status = 'INVALID'
and object_type in ( 'PACKAGE',
'PACKAGE BODY',
'PROCEDURE',
'VIEW',
'TRIGGER' )
/
spool off
set feedback on
set echo on
set termout on
@recompilar.sql
spool off
Resulta que al hacer un export de todo, fallaba y daba un error en un paquete.
La solución es sencilla, ejecutar este script para detectar objetos que requieren ser compilados, y repetirla hasta que no haya mas objetos...
Pero, me pregunto, porqué el proceso de instalación del parche no hace esto mismo al acabar? si hay objetos inválidos, los tenemos que compilar, no hay mas ciencia.
Preguntas sin respuesta...
set head off
set pagesize 0
set echo off
set verify off
set feedback off
set termout off
spool recompilar.sql
select 'alter '||
decode(object_type, 'PACKAGE BODY', 'PACKAGE',
object_type) || ' ' ||
owner||'.'||
object_name||' compile' ||
decode(object_type, 'PACKAGE BODY', ' BODY') || ';'
from dba_objects
where status = 'INVALID'
and object_type in ( 'PACKAGE',
'PACKAGE BODY',
'PROCEDURE',
'VIEW',
'TRIGGER' )
/
spool off
set feedback on
set echo on
set termout on
@recompilar.sql
spool off
Comentarios