/*
======
Title:
======
Compiling Invalid Objects in the Database
===========
Disclaimer:
===========
This script is provided for educational purposes only. It is not supported by
Oracle Worldwide Technical Support. This script has been tested and appears
to work as intended. However, you should always test any script before
relying on it.
PROOFREAD THIS SCRIPT BEFORE USING IT! Due to differences in the way text
editors, e-mail packages, and operating systems handle text formatting
(spaces, tabs, and carriage returns), this script may not be in an executable
state when you first receive it. Check over the script to ensure that errors
of this type are corrected.
=========
Abstract:
========
This script will compile INVALID objects in the database.
=============
Requirements:
=============
DBA
=======
Script:
=======
-------------cut-------------cut---------------cut--------------
*/
REM Script to compile INVALID Objects in the database
REM
REM VALIDATE.SQL
REM
REM This script recompiles all objects that have become invalidated
REM
REM
REM For proper generation of the log file, this script should be
REM run after connecting as SYS (or internal) using SQL*Plus 3.3
REM (PLUS33W.EXE or PLUS33.EXE).
REM
REM When run from Server Manager 2.3, all objects will still be
REM recompiled, but the log file, VALIDATE.LOG, will contain some
REM error messages. Those error messages are generated because
REM Server Manager does not understand all of the SET xxx messages
REM used in this script.
REM
set pagesize 0
set linesize 120
set heading off
set feedback off
set trimspool on
set termout on
select 'Recompiling '||count(object_name)||' invalid objects.'
from dba_objects where status='INVALID';
prompt This may take a long time. Please wait...
set termout off
spool validate_objects.sql
prompt spool validate.log
prompt set trimspool on
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'
order by decode(owner, 'SYS', 'A', 'SYSTEM', 'B', 'C'||owner) asc,
decode(object_type, 'PACKAGE BODY', 'AAA', 'PACKAGE', 'AAB',
substr(object_type, 1, 3)) desc,
object_name;
REM
REM Compile SYS's objects first, then SYSTEM's, then the rest.
REM This order by clause will result in compiling objects
REM in this order:
REM
REM VIEWS, TRIGGERS, PROCEDURES, FUNCTIONS, PACKAGES, PACKAGE BODIES.
REM
select 'set heading on' from dual;
select 'set feedback on' from dual;
select 'select substr(rpad(owner||''.''||object_name,40)' from dual;
select ' ||''(''||object_type||'')'', 1, 80) "Remaining Invalid
Objects"' from dual;
select 'from dba_objects where status=''INVALID'' order by owner, object_type,
object_name;' from dual;
select 'spool off' from dual;
spool off
@validate_objects.sql
set termout on
set pagesize 25
set linesize 80
set heading off
set feedback off
select chr(13)||'Finished recompiling.' from dual;
select chr(13)||'There are '||count(*)||' remaining invalid objects.'
||decode(count(*), 0, null, ' Please recompile manually.')
from dba_objects where status='INVALID';
set heading on
select substr(rpad(owner||'.'||object_name,40)
||'('||object_type||')', 1, 80) "Remaining Invalid Objects"
from dba_objects where status='INVALID' order by owner, object_type,
object_name;
/*
-------------cut-------------cut---------------cut--------------
=========
Examples:
=========
Solutions and References:
<PrSol:2084052.6> NEW SOLUTION FROM ITS TAR 10371036.5
*/