一、問題描述
ORA-01775: 同義詞的循環鏈問題
二、 原因分析
同義詞對應的對象(表等)已刪除,不存在了。
可能原因:
- 刪除數據庫對象,但是忘記刪除同義詞。
- 刪除一個用戶,但忘記刪除此用戶中相關的同義詞。
- 創建同義詞時,同同義詞對應的數據庫對象已經被刪掉了。
三、處理方法
為了方便使用和管理,一般同義詞是和表名或者視圖名一致的。
1.查看是否有名稱不一致的同義詞和對象
select * from dba_synonyms where table_owner='STUDY' and synonym_name<>table_name;
這里的table_owner是用戶名, synonym_name是同義詞名稱, table_name 是表名。
2.查看與同義詞同名對象已不存在的同義詞
select * from dba_synonyms
where table_owner='STUDY'
and synonym_name in (select a.synonym_name from dba_synonyms a where a.table_owner='STUDY' minus select object_name from user_objects)
查詢結果集中的這些同義詞都會報“ ORA-01775: 同義詞的循環鏈問題”。
3.刪除2中查詢出的同義詞