2014-12-19 64 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