【发布时间】:2014-12-19 15:35:48
【问题描述】:
我正在对 all_objects 执行选择查询:
select * from all_objects;
我遇到以下错误:
从所有对象中选择 * *
第 1 行出现错误:ORA-01775:同义词循环链
我不太确定为什么会出现此错误。我从这个错误中了解到的是,定义了一个以某种方式引用自身的同义词。但是从 all_objects 中选择任何内容时不应出现该错误。我的数据库是否已损坏。
附注我知道关于这个错误的问题已经足够了,但是给出的所有答案都没有回答我的问题。我真的是 oracle 新手,这个问题的解决方案会有很大帮助。
【问题讨论】:
-
如果您将其限制为特定模式,您会收到错误消息吗?
WHERE OWNER='SchemaName'也可能意味着缺少同义词目标:stackoverflow.com/questions/23251876/… -
也许:
select * from user_synonyms where (table_owner, table_name) not in ( SELECT owner, object_name from all_objects ); -
如果同义词所引用的视图或表名称已更改,或者视图或表已被删除,您可能会收到此错误。
-
您是否为
all_tables视图创建了自己的私有同义词?如果是这样,xQbert 的查询应该表明这一点。 -
Odd... 因此,无论您限制的架构名称如何,您都会得到相同的错误。这意味着系统公共同义词已以某种方式更改。我们已经超越了我的基本故障排除,可能需要更擅长 Oracle 的 DBA 活动的人提供见解。除非这里有人是 DBA,否则我建议将此帖子移至 dba.stackexchange.com,因为我认为该错误比代码更改更深入。