quarta-feira, 15 de fevereiro de 2017

ORA-01775: loop na cadeia de sinônimos


O erro  ORA-01775: loop na cadeia de sinônimos , ocorreu para mim após a execução de um script SQL que continha o comando abaixo:  

                  CREATE OR REPLACE PUBLIC SYNONYM "DUAL" FOR "DUAL";

Após a execução do comando acima todas as triggers do banco de dados que utilizam a tabela “DUAL” para auxiliar no comando sql que retorna o valor de incremento da “Sequence” pararam de funcionar. 

Abaixo o comando sql que utilizo nas minhas triggers para obter o valor sequencial.  


       Select Nome_da_Sequence.nextval into :new.ID   From dual;   

             
                  Observação: A tabela Dual é muito utilizada para fazer operações com select                                             aonde não é necessário fazer extração de dados em tabelas.                                                 Basicamente ela ajuda a manter a sintaxe correta de um select                                               aonde não teremos uma tabela na consulta.

Esse comando alterou o valor do campo “TABLE_OWNER” da tabela “DBA_SYNONYMS” que antes apresentava o nome do usuário “SYS”  para o nome do usuário “THIAGO_OWNER”, essa mudança fez com que os usuários que utilizavam a tabela "DUAL" perdessem a permissão para utiliza-la.


Utilize o comando SQL abaixo para visualizar o registro da tabela “DUAL” na tabela “DBA_SYNONYMS”.



  SELECT * FROM dba_synonyms WHERE owner = 'PUBLIC' AND synonym_name = 'DUAL';

Resultado:


OWNER
SYSNONYM_NAME
TABLE_OWNER
TABLE_NAME
DB_LINK
PUBLIC
DUAL
SYS
THIAGO_OWNER
(null)


Para efetuar a correção execute o comando abaixo: 

          CREATE OR REPLACE PUBLIC SYNONYM "DUAL" FOR "SYS"."DUAL";

Agora execute novamente o comando abaixo e você verá que o valor do campo “TABLE_OWNER” estará como o nome do usuário "SYS".

SELECT * FROM dba_synonyms WHERE owner = 'PUBLIC' AND synonym_name = 'DUAL';

Resultado:

OWNER
SYSNONYM_NAME
TABLE_OWNER
TABLE_NAME
DB_LINK
PUBLIC
DUAL
SYS
DUAL
(null)

Bom pessoal e isso ai, espero ter ajudado! Até aproxima.

Autor: Thiago Pereira