>From the oracle Metalink..
/*
Doc ID: Note:1036972.6
DATABASE
Type: SCRIPT
Status: PUBLISHED
Content Type: TEXT/PLAIN
Creation Date: 15-OCT-1997
Last Revision Date: 27-APR-2000
Language: USAENG
======
Title:
======
Compiling Invalid Objects in the Database
===========
Disclaimer:
===========
This script is provided for educational purposes
only. It is not supported by
Oracle Support Services. 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 For proper generation of the log file, this
script should be
REM run after connecting as SYS (or internal)
using SQL*Plus.
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';
select 'This may take a long time. Please wait...'
from dual;
set termout off
spool validate_objects.sql
select 'spool validate.log' from dual;
select 'set trimspool on' from dual;
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
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;
===============================================
the short version ;)
select decode( object_type, 'PACKAGE BODY', 'ALTER
PACKAGE ' || OWNER ||'.'||OBJECT_NAME || ' COMPILE
BODY;',
'ALTER ' || OBJECT_TYPE||'
'||OWNER||'.'||OBJECT_NAME||' COMPILE;' )
FROM DBA_OBJECTS A, SYS.ORDER_OBJECT_BY_DEPENDENCY B
WHERE A.OBJECT_ID = B.OBJECT_ID(+) and A.STATUS =
'INVALID'
AND A.OBJECT_TYPE IN ('PACKAGE BODY', 'PACKAGE',
'FUNCTION', 'PROCEDURE', 'TRIGGER', 'VIEW' )
ORDER BY B.DLEVEL DESC, A.OBJECT_TYPE, A.OBJECT_NAME;
I hope this help
regards
Gabriel
--- Connor McDonald <[EMAIL PROTECTED]> wrote:
> @?/rdbms/admin/utlrp.sql
>
> hth
> connor
>
> --- "Vergara, Michael (TEM)" <[EMAIL PROTECTED]>
> wrote: > I have written scripts like this in the
> past,
> but
> > the problem
> > I run into is that recompiling some objects
> > invalidates others,
> > sometimes in a circular loop. What I'd like to
> > find/see/learn-how-to-do
> > is a script that compiles things in dependency
> > order. So far,
> > this capability eludes me. I use Oracle 8.0.5 ->
> > 8.1.7.4.
> >
> > Cheers,
> > Mike
> >
> > -----Original Message-----
> > Sent: Saturday, August 17, 2002 8:48 AM
> > To: Multiple recipients of list ORACLE-L
> >
> >
> > Script "gen_recompile.sql" online at
> > http://www.EvDBT.com/tools.htm...
> >
> > As written, it will not execute the generated
> > "run_recompile.sql" script; you'll have to
> > uncomment the HOST command at the bottom to do
> that.
> > I like to leave it with it's teeth pulled however
> > -- at least at first -- so I can review the
> > generated script...
> >
> > Hope this helps...
> >
> > ----- Original Message -----
> > To: Multiple recipients of list ORACLE-L
> > <mailto:[EMAIL PROTECTED]>
> > Sent: Friday, August 16, 2002 4:28 PM
> >
> > I am feeling lazy today .. sooooo if someone can
> > give me script that compiles all invalid objects
> > untill all objects are valid ... will be great .
> Yes
> > I am looking for the one which does this in a loop
> > so that i dont have to run this many times to get
> 0
> > invalid objects
> >
> > Thanks ,
> > -Bp
> >
> >
>
> =====
> Connor McDonald
> http://www.oracledba.co.uk
> http://www.oaktable.net
>
> "Remember amateurs built the ark - Professionals
> built the Titanic"
>
> __________________________________________________
> Do You Yahoo!?
> Everything you'll ever need on one web page
> from News and Sport to Email and Music Charts
> http://uk.my.yahoo.com
> --
> Please see the official ORACLE-L FAQ:
> http://www.orafaq.com
> --
> Author: =?iso-8859-1?q?Connor=20McDonald?=
> INET: [EMAIL PROTECTED]
>
> Fat City Network Services -- (858) 538-5051 FAX:
> (858) 538-5051
> San Diego, California -- Public Internet
> access / Mailing Lists
>
--------------------------------------------------------------------
> To REMOVE yourself from this mailing list, send an
> E-Mail message
> to: [EMAIL PROTECTED] (note EXACT spelling of
> 'ListGuru') and in
> the message BODY, include a line containing: UNSUB
> ORACLE-L
> (or the name of mailing list you want to be removed
> from). You may
> also send the HELP command for other information
> (like subscribing).
=====
"Any dream worth having is a dream worth fighting for"(Cualquier sue�o que valga la
pena tener, es un sue�o por el que vale la pena luchar)Charles Xavier
__________________________________________________
Do You Yahoo!?
HotJobs - Search Thousands of New Jobs
http://www.hotjobs.com
--
Please see the official ORACLE-L FAQ: http://www.orafaq.com
--
Author: Gabriel Aragon
INET: [EMAIL PROTECTED]
Fat City Network Services -- (858) 538-5051 FAX: (858) 538-5051
San Diego, California -- Public Internet access / Mailing Lists
--------------------------------------------------------------------
To REMOVE yourself from this mailing list, send an E-Mail message
to: [EMAIL PROTECTED] (note EXACT spelling of 'ListGuru') and in
the message BODY, include a line containing: UNSUB ORACLE-L
(or the name of mailing list you want to be removed from). You may
also send the HELP command for other information (like subscribing).