 |
|
ORA-00980: synonym translation is no longer valid tips
Oracle Error Tips by Burleson Consulting
|
Oracle docs note this about ORA-00980:
ORA-00980 synonym translation
is no longer valid
-
Cause:
The synonym used is based on a table,
view, or synonym that no longer exists.
-
Action:
Replace the synonym with the name of the
object it references or re-create the
synonym so that it refers to a valid
table, view, or synonym.
Oracle
MOSC has great notes regarding ORA-00980 in which users have found that
the DB crashes in startup in Enterprise versions 9.2-9.2 on any platform.
This instance of ORA-00980 typically either occurs along with ORA-01092 when the
startup crashes, or just ahead of the finishing clean shut down (even if the
database had previously been running properly). ORA-00980 is associated
with dropped sys user dual table which throws ORA-00980 upon database shutdown
or database startup.
Startup failure with ORA-00980 and ORA-01092
appears as follows:
===========================================
SQL> startup;
ORACLE instance started.
Total System Global Area 110173996 bytes
Fixed Size 454444 bytes
Variable Size 92274688 bytes
Database Buffers 16777216 bytes
Redo Buffers 667648 bytes
Database mounted.
ORA-01092: ORACLE instance terminated. Disconnection forced
==========================================
Upon setting the Errorstack in init.ora to find
the cause of the ORA-00980, the errorstack report shows that ORA-00980 is
involved in a problematic SQL:
==========================================
*** 2004-08-18 17:32:55.837
ksedmp: internal or fatal error
ORA-00980: synonym translation is no longer valid
Current SQL statement for this session:
select 1 from dual where exists (select 1 from system.repcat$_repprop prop
where prop.type in (-1,2,9,-4) and prop.how in (1,3))
==========================================
To resolve ORA-00980, note that ORA-00980 is
causing the database shutdown because it is occurring during the db opening.
This being, to resolve ORA-00980, you would need to make a Dual Table, when not
in the mount stage as a workaround. First, put
replication_dependency_tracking = FALSE in init.ora and startup the
database. Next, make a Dual Public Synonym and Dual Table, such as:
CREATE TABLE "SYS"."DUAL"
( "DUMMY" VARCHAR2(1)
) PCTFREE 10 PCTUSED 4;
Insert Into Dual Values ('X');
Commit;
Grant Select On Dual To Public;
Lastly, take out the parameter above, and try
restarting your database. However, while resolving ORA-00980, remember
that Dual Tables shouldn't ever be dropped, or serious problems can occur.
Oracle docs also has more information on ORA-00980 regarding invalid
synonyms. Here, they reveal that:
"ORA-00980:
synonym translation is no longer valid" is a common error encountered in a
development environment. This can happen for many reasons. Some of them are
1. 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.
2. You dropped an object but you did not drop the synonyms referencing the
object.
3. You dropped a user, but you did not drop synonyms referencing the objects
owned by that user.
Keep in mind when
reviewing your ORA-00980 situation that as objects become dropped the synonyms
aren't.
|