Originally posted by aj_usa
If I do this
SELECT ds.owner, ds.synonym_name
FROM dba_synonyms ds,all_objects do
WHERE ds.owner(+) = do.owner AND
do.object_name IS NULL AND
ds.synonym_name = do.object_name and
do.owner IN ('SYSTEM', 'SYS');
-- no rows selected.
Are you using 8i?

You should also be able to do this.

Code:
SELECT owner, object_name, last_ddl_time, status, 
              temporary,   generated,     secondary
  FROM all_objects
 WHERE owner NOT IN( 'SYS', 'SYSTEM' ) AND
       object_type = 'SYNONYM'         AND
       status      = 'INVALID';