今天測試部在跑系統時,老是會報ORA-00980錯誤。發現同義詞有問題。原因是用表的同義詞對表查詢時報錯,表找不到,同義詞無效了。
同義詞創建時,不會去檢測內容的准確性,即如果表不存在,也可以創建該表的同義詞,但是select時會報ORA-00980 同義詞轉換不再有效(ORA-00980: synonym translation is no longer valid)的錯誤。
Tom對此錯誤的解釋:
That error
simply means "synonym is still here, but the object it points to is inaccessible". It
could be inaccessible due to a missing grant, or due to the object not being there.
You need to find out what synonym it is, query the data dictionary to figure out what
object it points to and figure out why you no longer have access to that object.
ops$tkyte@ORA920> create synonym s for t;
Synonym created.
ops$tkyte@ORA920> select * from s where rownum = 1;
C
----------
1
ops$tkyte@ORA920> drop table t;
Table dropped.
ops$tkyte@ORA920> select * from s where rownum = 1;
select * from s where rownum = 1
*
ERROR at line 1:
ORA-00980: synonym translation is no longer valid
TOM解釋:http://asktom.oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:7095288486502