2014-12-19 34 views
0

我上ALL_OBJECTS执行选择查询:ORA-01775:在all_objects上执行select命令时循环同义链?

select * from all_objects; 

我得到以下错误:

select * from all_objects *

ERROR at line 1: ORA-01775: looping chain of synonyms

我不太知道为什么这个错误即将到来。我从这个错误中得到的理解是,定义了一种同义词,它以某种方式被自己所接受。但是,从all_objects中选择任何内容时不应出现该错误。我的数据库是否损坏。

P.S.我知道有足够的人被问到这个错误,但所有给出的答案都没有回答我的问题。我对oracle真的很陌生,对这个问题的解决方案将会有很大的帮助。

+0

如果将其限制在特定模式下,是否会出现错误? 'WHERE OWNER ='SchemaName''也可能意味着缺少一个同义词目标:http://stackoverflow.com/questions/23251876/why-oracle-is-complaining-about-a-looping-chain-of-synonyms-ora01775 -in-packag – xQbert

+1

也许:'select * from user_synonyms where(table_owner,table_name)not in(SELECT owner,object_name from all_objects);' – xQbert

+0

如果同义词所反映的视图或表名称存在,则可能会出现此错误已更改或视图或表已被删除。 – Shankar

回答

0

试试这个选择,找到问题的代名词..从这个link简称

。我无法检查它是否有效。

SELECT * 
FROM dba_synonyms 
WHERE table_owner = 'SYSADM' 
    AND (
     NOT EXISTS (
      SELECT * 
      FROM dba_tables 
      WHERE dba_synonyms.table_name = dba_tables.TABLE_NAME 
      ) 
     AND NOT EXISTS (
      SELECT * 
      FROM dba_views 
      WHERE dba_synonyms.table_name = dba_views.VIEW_NAME 
      ) 
     AND NOT EXISTS (
      SELECT * 
      FROM dba_sequences 
      WHERE dba_synonyms.table_name = dba_sequences.sequence_NAME 
      ) 
     AND NOT EXISTS (
      SELECT * 
      FROM dba_dependencies 
      WHERE type IN (
        'PACKAGE' 
        ,'PROCEDURE' 
        ,'FUNCTION' 
        ) 
       AND dba_synonyms.table_name = dba_dependencies.NAME 
      ) 
     ) 
+0

不,它也给出了同样的问题。 – amod