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.