2014-12-19 2 views
0

Я уверен, выполнение запроса на выборку по ALL_OBJECTS:ORA-01775: циклическая цепочка синонимов при выполнении команды select на all_objects?

select * from all_objects; 

Я получаю ниже ошибки:

select * from all_objects *

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

Я не уверен, почему эта ошибка приходит. То, что я понимаю из этой ошибки, состоит в том, что определены синонимы, которые каким-то образом отражаются на себе. Но эта ошибка не должна возникать при выборе чего-либо из всех_объектов. Моя база данных повреждена.

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 * от user_synonyms где (table_owner, table_name) не находится (владелец SELECT, имя_объекта из 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

Смежные вопросы