Script to compile invalid objects in DB

REM: Script to compile invalid objects in DB after refreshing  
REM:  
REM:*****************************************  
REM:  
REM: NOTE: PLEASE TEST THIS SCRIPT BEFORE USE.  
REM: Author will not be responsible for any damage that may be cause by this script.  
REM:*****************************************  
  
set pagesize 0  
set feedback off  
set trimspool on  
prompt  
prompt Run the script as sysdba otherwise invalid objects will remain (ORA-01031 error)  
prompt  
prompt Run the script several times. It only takes long the first time  
prompt  
prompt check the progress of compilation by issueing from another session  
prompt select count(*) "invalid" from dba_objects where status <> 'VALID';  
prompt  
prompt hit <enter> to continue  
pause  
spool compile.lis  
select 'alter '||object_type||' '||owner||'.\"'||object_name||'\" compile;'  
from dba_objects  
where status<>'VALID'  
and object_type not in ('PACKAGE BODY','TYPE BODY','UNDEFINED','JAVA CLASS','SYNONYM')  
union  
select 'alter package '||owner||'.'||object_name||' compile body;'  
from dba_objects  
where status<>'VALID'  
and object_type='PACKAGE BODY'  
union  
select 'alter type '||owner||'.'||object_name||' compile body;'  
from dba_objects  
where status<>'VALID'  
and object_type='TYPE BODY'  
union  
select 'alter materialized view '||owner||'.'||object_name||' compile;'  
from dba_objects  
where status<>'VALID'  
and object_type='UNDEFINED'  
union  
select 'alter java class '||owner||'.\"'||object_name||'\" resolve;'  
from dba_objects  
where status<>'VALID'  
and object_type='JAVA CLASS'  
union  
select 'alter synonym '||owner||'.'||object_name||' compile;'  
from dba_objects  
where status<>'VALID'  
and object_type='SYNONYM'  
and owner<>'PUBLIC'  
union  
select 'alter public synonym '||object_name||' compile;'  
from dba_objects  
where status<>'VALID'  
and object_type='SYNONYM'  
and owner='PUBLIC';  
spool off  
set feedback on   

 

posted @ 2014-04-15 11:29  我不卖豆腐  阅读(477)  评论(0编辑  收藏  举报