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:
- criar link de banco de dados para C
- criar sinônimo
table
para[email protected]
Em A, você pode então
SELECT *
FROM [email protected]