begin
for c in (select OBJECT_NAME from dba_objects where owner!='SYS' and object_type = 'SYNONYM' and status='INVALID')
Loop
begin
execute immediate
'drop public synonym ' || c.object_name;
end;
end loop;
end;
/
Очень часто после установки всякой дряни от Quest остается помойка, на которую ругается оптимайзер...