segunda-feira, 17 de agosto de 2009

ORA-01775 Looping Chain of Synonyms

Olá pessoal, como vão?

Estou de volta para dar uma dica com relação a um erro bem chato que peguei essa semana, algo inusitado pois nunca me ocorreu.

Ao recriar alguns sinonimos para alguns objetos de banco, me deparei com a seguinte mensagem de erro :

ERRO na linha 1:
ORA-01775: looping chain of synonyms

Foi ai então que começei a procurar o que significaria este erro, e por consequencia achei a seguinte definição:

ORA-01775: looping chain of synonyms
Cause: Through a series of CREATE synonym statements, a synonym was defined that referred to itself. For example, the following definitions are circular:


CREATE SYNONYM s1 for s2 CREATE SYNONYM s2 for s3 CREATE SYNONYM s3 for s1

Action: Change one synonym definition so that it applies to a base table or view and retry the operation

Com essas informações nas mãos, me coloquei a procurar onde eu havia me equivocado na criação dos sinonimos que pudesse ter gerado este erro em meu Banco de Dados, e descobri que eu tinha um sinonimo criado no owner A que apontava para um objeto no owner B que tinha uma referencia a um owner C (rss!!!) , cnfusões a parte, o que foi necessário fazer foi :

1. Identificar o Synonym envolvido ( fiz isso através de um trace gerado na sessão em que o user acessava a aplicação)
2. Remover o Synonym.
3. Recriar o Synonym e dar permissões aos demais users de aplicação.

Outras incidências que podem ocorrer esse erro por exemplo, é quando se tem um Synonym que aponte para uma tabela que não existe, veja:

OWNER SYNONYM_NAME TABLE_OWNER TABLE_NAME
------ ------------------------ ------------ -----------------------
PUBLIC TMP_PREVIEW_LIQUIDACOES DPD TMP_PREVIEW_LIQUIDACOES



select * from TMP_PREVIEW_LIQUIDACOES
*
ERRO na linha 1:
ORA-01775: looping chain of synonyms

select * from dpd.TMP_PREVIEW_LIQUIDACOES
*
ERRO na linha 1:
ORA-00942: table or view does not exist

Portanto, prestem muita atenção quando estiverem criando seus objetos para que não caiam nessa pegadinha de mau gosto.

Abraço á todos!!!!