hi,

Run this script from sqlplus.
Spool the file

declare
begin
for i in (select owner,OBJECT_NAME,OBJECT_TYPE from dba_objects where OBJECT_TYPE in ('PACKAGE','PACKAGE BODY') and status='INVALID') loop
if(i.OBJECT_TYPE = 'PACKAGE BODY')
then
execute immediate 'ALTER PACKAGE '||i.owner||'.'||i.OBJECT_NAME||' COMPILE BODY';
else
execute immediate 'ALTER PACKAGE '||i.owner||'.'||i.OBJECT_NAME||' COMPILE';
end if;
dbms_output.put_line(i.OBJECT_TYPE||i.object_name||'COMPILED');
end loop;
end;
/

U can add more object type in the in clause...

Please let me know if this workd for as it did for me...

regards
saurabh