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
Autor: Thiago Pereira
Nenhum comentário:
Postar um comentário