Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Como invocar SELECT sobre DBLINK sobre DBLINK?


Em primeiro lugar, arquitetonicamente, eu ficaria bastante desconfiado de qualquer design que envolvesse puxar dados por vários links de banco de dados. Eu vi isso feito quando a fonte eventual é alguma versão antiga do Oracle que o banco de dados de destino não pode se conectar diretamente, então um banco de dados intermediário executando uma versão intermediária do Oracle foi usado. Isso é muito raro na prática, no entanto.

Do ponto de vista do desempenho, esse tipo de abordagem é gravemente problemático. Há, é claro, o problema de que os dados serão enviados pela rede duas vezes. Mas, mais preocupante, você está pegando um problema difícil, otimizando instruções SQL distribuídas e tornando-o quase intratável. Você basicamente teria que garantir que nunca consultaria dados locais e dados remotos na mesma consulta ou teria que conviver com o desempenho resultante se a Oracle decidisse um plano de consulta estúpido porque o conjunto de ferramentas permitia que você otimizar esse tipo de consulta é mínimo.

Dito isso, o banco de dados intermediário precisaria ter sinônimos ou visualizações que abstraíssem o link do banco de dados. Então

Com um:
  • criar link de banco de dados para B

Em B:

Em A, você pode então
SELECT *
  FROM [email protected]