Can't you just do a variant of

SET HEAD OFF TERMOUT OFF ECHO OFF

select 'alter '||decode(object_type,'PACKAGE BODY',' PACKAGE
',object_type)||
       ' '||object_name||' compile '||
         decode(object_type,'PACKAGE BODY','BODY ','')||';'
from user_objects
where object_type in ('PACKAGE', 'PACKAGE BODY', 'PROCEDURE', 'FUNCTION',
'VIEW','TRIGGER') 
and   status != 'VALID'

spool recomp.sql
/
spool off
SET HEAD ON TERMOUT ON ECHO ON

start recomp


which will attempt to recompile anything invalid. 

Option 1 wouldn't necessarily ever work as I believe recompilation only
happens when something is called directly i.e. if the user calls a package
which in turn calls an invalid package then recompilation would not happen
(apologies if I'm wrong)

Iain Nicoll
-----Original Message-----
Sent: Monday, April 15, 2002 1:23 PM
To: Multiple recipients of list ORACLE-L


Hi all,

We have an application which deletes a large number of rows from a 
table.  It would be faster to simply insert the rows that we want to keep 
into a second table, drop the original table and then rename the second 
table to that of the one we have just dropped.

The only downside that I can see is that all the source objects which 
reference the original table become invalid.

We could:
1.      Simply allow the source objects to be recompiled naturally overtime 
as they are reused (but with the possibility of a large number of invalid 
objects at any one time in the database and little control over when 
compilation is done).
2.      Force recompilation following the drop table.  However this would 
require logging all objects which would need recompilation.  This is an 
additional step for any new development and would therefore the list of 
object would be prone to become inaccurate over time.  (Could maybe do this 
automatically using USER_REFERENCES prior to the drop table? - still seems 
a bit clumsy)

Does anyone have any comments on doing this?

Many thanks
- Bill.

-- 
Please see the official ORACLE-L FAQ: http://www.orafaq.com
-- 
Author: Bill Buchan
  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).
-- 
Please see the official ORACLE-L FAQ: http://www.orafaq.com
-- 
Author: Nicoll, Iain (Calanais)
  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).

Reply via email to