Eu tenho um problema quando tento criar um sinônimo assim:
CREATE SYNONYM B2H.BILLING_USER_ACTIVITY@PACOMNET
FOR [email protected];
Por que isso acontece e como posso corrigi-lo?
Eu tenho um problema quando tento criar um sinônimo assim:
CREATE SYNONYM B2H.BILLING_USER_ACTIVITY@PACOMNET
FOR [email protected];
Por que isso acontece e como posso corrigi-lo?
Como a documentação diz implicitamente, você pode criar sinônimos apenas no banco de dados atual. Portanto, o primeiro
@PACOMNET
no nome do sinônimo é desnecessário (e está causando o erro). Em vez disso, você deve se conectar ao banco dePACOMNET
dados e executarNo Oracle, DDL no banco de dados remoto não é permitido . Uma razão provável é que uma confirmação de transação distribuída não pode ser iniciada no site remoto (você não pode
COMMIT@remote
) e, como as instruções DDL incluem uma confirmação, elas não são permitidas.Você obteria um
ORA-02021
com outras instruções DDL:Você pode criar o link do banco de dados conectando-se diretamente ao banco de dados remoto.
Conforme sugerido na discussão askTom, você também pode usar
DBMS_JOB@remote
ouDBMS_SCHEDULER@remote
para criar uma transação remota distinta que pode iniciar a instrução DDL.se alguém inserir a instrução em sqlplus (Oracle10.2, Solaris 5.10), recebo o seguinte:
Após a instrução, a linha com falha é impressa e abaixo da linha com falha um asterisco (*) marca o caractere onde o analisador sql localizou o problema. Portanto, o problema está localizado no caractere '@'. O diagrama de sintaxe da instrução 'criar sinônimo' pode ser encontrado no manual
Em contraste com a especificação de objeto após 'FOR', a especificação de sinônimo antes de for não contém um '@dblinK'.
Para problemas de sintaxe, você deve usar uma ferramenta apropriada (por exemplo, sqlplus) que exibe a posição exata do erro onde a instrução falha.