While querying a view, got below error:
SQL> select * from DBA_SYN;
select * from DBA_SYN
*
ERROR at line 1:
ORA-00980: synonym translation is no longer valid
SOLUTION:
This error indicates that synonym is invalid , which is likely due to invalid dependent objects.
Lets check this below scenarios:
1. Create a public synonym for a table:
SQL> CREATE PUBLIC SYNONYM DBA_SYN FOR DBA_PART; Synonym created. SQL> select count(*) from DBA_SYN; COUNT(*) ---------- 0
2. Metadata of the synonym:
SQL> select dbms_metadata.get_ddL('SYNONYM','DBA_SYN','PUBLIC') from dual; DBMS_METADATA.GET_DDL('SYNONYM','DBA_SYN','PUBLIC') -------------------------------------------------------------------------------- CREATE OR REPLACE NONEDITIONABLE PUBLIC SYNONYM "DBA_SYN" FOR "SYS"."DBA_PART"
3. Drop the dependent table(DBA_PART) and query the synonym:
— Query dependent objects of that synonym:
SQL> select owner,SYNONYM_NAME,TABLE_OWNER,TABLE_NAME from dba_synonyms where SYNONYM_NAME='DBA_SYN'; OWNER SYNONYM_NAME TABLE_OWNER TABLE_NAME -------- ------------- ------------ --------------- PUBLIC DBA_SYN SYS DBA_PART SQL> select owner,object_name,object_type from dba_objects where object_name='DBA_PART'; OWNER OBJECT_NAME OBJECT_TYPE -------- ------------- ----------------------- SYS DBA_PART TABLE SQL> drop table DBA_PART; Table dropped. SQL> select owner,object_name,object_type from dba_objects where object_name='DBA_PART'; no rows selected SQL> select count(*) from DBA_SYN; select count(*) from DBA_SYN * ERROR at line 1: ORA-00980: synonym translation is no longer valid
Now querying the synonym throwing ORA-00980: synonym translation is no longer valid error.Because the dependent object is missing.
CONCLUSION:
When we get this error, we have to check the status of dependent object of that synonym. If this dependent object is missing or invalid, then take required action like compiling/recreating the object.