This can happen for many reasons. Some of them are:
- You created a synonym on non-existing object by mistake.
- For example, you created a synonym on SCOTT.DEPT where either the SCOTT schema in not present or the DEPT table is missing.
- You dropped an object but you did not drop the synonyms referencing the object.
- You dropped a user, but you did not drop synonyms referencing the objects owned by that user.
- When an object is dropped, synonyms referring to the object are not dropped. The following script lists all such invalid synonyms:
- This script generates DDL to drop synonyms whose translation is no longer valid.
SQL> rem
rem Exludes SYS and SYSTEM users
rem
select 'drop '||decode (s.owner,'PUBLIC','PUBLIC SYNONYM ',
'SYNONYM'||s.owner||'.')||s.synonym_name||';'
from dba_synonyms s
where table_owner not in('SYSTEM','SYS')
and db_link is null
and not exists (select 1 from dba_objects o
where s.table_owner=o.owner and s.table_name=o.object_name)
/
Happy Learning....
No comments:
Post a Comment