一、问题描述
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中查询出的同义词